STM32CubeMX RS232接口

一、基础知识

  1. TTL(Transistor-Transistor Logic)

    • 电平范围: 逻辑1对应于2.4V–5V,逻辑0对应于0V–0.5V。
    • 通信特点: 全双工。
    • 特点: 常见于单片机和微控制器的IO电平,USB转TTL模块通常是将USB转为TTL电平的串口模块。
  2. RS232

    • 电平范围: 逻辑1对应于-15V–-5V,逻辑0对应于+3V–+15V。
    • 通信特点: 全双工。
    • 特点: RS232是一种异步传输标准接口,电平标准和通信协议(时序)都有规定,适用于一对一连接。

STM32CubeMX RS232接口_第1张图片

 嘉立创EDA(标准版) - 免费、易用、强大的在线电路设计软件

STM32CubeMX RS232接口_第2张图片

二、CubeMX配置

sys

STM32CubeMX RS232接口_第3张图片

 rcc

STM32CubeMX RS232接口_第4张图片

 时钟树

STM32CubeMX RS232接口_第5张图片

 UART4STM32CubeMX RS232接口_第6张图片

生成工程

STM32CubeMX RS232接口_第7张图片

STM32CubeMX RS232接口_第8张图片

三、代码

串口重定向,打开MicroLIB

STM32CubeMX RS232接口_第9张图片

 main.c中

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

#include "stdio.h"
int fputc(int ch,FILE *f)
{
    HAL_UART_Transmit(&huart4,(uint8_t*)&ch,1,0xFFFF);
    return ch;
}
/* USER CODE END Includes */

函数while中

   /* USER CODE BEGIN WHILE */

  while (1)
  {
		HAL_GPIO_TogglePin(GPIOD,GPIO_PIN_5);
		printf("Hello!\r\n");
		HAL_Delay(1000);
		
    /* USER CODE END WHILE */

效果

STM32CubeMX RS232接口_第10张图片

 接下来实现发送数据,串口打印回来

STM32CubeMX RS232接口_第11张图片

main.c   中添加空闲中断回调函数

/* USER CODE BEGIN 0 */
uint8_t a[20];
//空闲中断回调函数,参数Size为串口实际接收到数据字节数
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{
	if(huart->Instance==UART4)//485
	{	  
				
		//把收到的一包数据通过串口回传
		HAL_UART_Transmit(&huart4,a,Size,0xff);
		
		//再次开启空闲中断接收,不然只会接收一次数据
		HAL_UARTEx_ReceiveToIdle_IT(&huart4,a,sizeof(a));
	}
	
}
/* USER CODE END 0 */
  /* USER CODE BEGIN 2 */

	HAL_UARTEx_ReceiveToIdle_IT(&huart4,a,sizeof(a));
	
  /* USER CODE END 2 */

效果

STM32CubeMX RS232接口_第12张图片

注意 RS232 接线一定要准确, Tx->Rx,Rx->Tx,Gnd->gnd

链接: https://pan.baidu.com/s/1wi1F9F4J63tqBk418PUE4w?pwd=gd46 提取码: gd46

你可能感兴趣的:(stm32,嵌入式硬件,单片机)