STM32 串口输出调试信息
软硬件信息
- CubeMX version 6.12.1
- Keil uVision V5.41.0.0
注意
串口有多种:
- TTL
- 232
- 485
串口的相关知识: 01-【HAL库】STM32实现串口打印(printf方式) , 内含 TTL 和 232 区别。
我把 232 串口连进 STM32 串口助手收到的信息一致乱码,调了好久才发现我用的 232, 不是 TTL.
STM32 板子自带 TTL 串口
在板子自带下载口一般有串口,在原理图中可以看到。板子链接电脑都在电脑 设备管理器 上也可以查到串口号。
方法一使用 HAL_UART_Transmit
CubeMX 配置
打开串口
原理图看到板子自带的是 USART1, 设置模式为 异步通讯。
时钟
串口异步通讯,不需要额外配置,配置适合板子的就行
Keil
在 main.c
的 while
中使用 HAL_UART_Transmit
函数
/* USER CODE BEGIN 3 */
uint8_t Test[] = "Hello World!"; //Data to send
HAL_UART_Transmit(&huart1,Test,sizeof(Test),10);// Sending in normal mode
HAL_Delay(2000);
成功接受收据
注意 可以不开 MicroLIB 一样成功接受
方法二使用printf
参考资料
- 第三节: 串口通信(用CubeMX学习STM32)
- STM32CubeMx 串口打印调试信息
- STM32CubeMX学习笔记(6)——USART串口使用
第一个我尝试成功了,但是它没有设置串口回调函数,第三个有回调函数配置。
使用 printf 方式一定要打开 MicroLIB。
while中程序
在while 外面定义 uint8_t num=0;
,然后,
num++;
char str1[20];
sprintf(str1, "%d", num);
printf("Converted string: %s\r\n", str1);
char str2[] = "Hello, this is serial port.\r\n";
strcat(str1, str2);
printf("Converted string: \r %s \n", str1);
HAL_Delay(2000);
}
/* USER CODE END 3 */
C的部分知识
数字转字符串
num++;
char str1[20];
sprintf(str1, "%d", num);
字符串拼接
char str2[] = "Hello, this is serial port.\r\n";
strcat(str1, str2);