STM32CubeMX RS232接口

发布时间:2024年01月17日

一、基础知识

  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是一种异步传输标准接口,电平标准和通信协议(时序)都有规定,适用于一对一连接。

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

二、CubeMX配置

sys

?rcc

?时钟树

?UART4

生成工程

三、代码

串口重定向,打开MicroLIB

?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 */

效果

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

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 */

效果

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

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

文章来源:https://blog.csdn.net/weixin_46286415/article/details/135356661
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。