一、基础知识
TTL(Transistor-Transistor Logic):
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