STM32 串口输出调试信息

软硬件信息

  • CubeMX version 6.12.1
  • Keil uVision V5.41.0.0

注意

串口有多种:

  1. TTL
  2. 232
  3. 485

串口的相关知识: 01-【HAL库】STM32实现串口打印(printf方式) , 内含 TTL 和 232 区别。
我把 232 串口连进 STM32 串口助手收到的信息一致乱码,调了好久才发现我用的 232, 不是 TTL.

STM32 板子自带 TTL 串口

在板子自带下载口一般有串口,在原理图中可以看到。板子链接电脑都在电脑 设备管理器 上也可以查到串口号。

方法一使用 HAL_UART_Transmit

CubeMX 配置

打开串口

原理图看到板子自带的是 USART1, 设置模式为 异步通讯。
在这里插入图片描述

时钟

串口异步通讯,不需要额外配置,配置适合板子的就行
在这里插入图片描述

Keil

main.cwhile 中使用 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

参考资料

第一个我尝试成功了,但是它没有设置串口回调函数,第三个有回调函数配置。
使用 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);

注意事项

STM32 定时器中断函数中间不要放 串口输出 信息

### STM32 使用 Keil5 进行串口调试时中文乱码的解决方案 当遇到在 Keil5 中通过串口输出中文字符时出现乱码的情况,通常有以下几个可能的原因以及对应的解决方法: #### 1. 波特率配置错误 波特率设置不匹配可能导致接收到的数据无法被正确解析。确保发送端和接收端设备之间的波特率完全相同是非常重要的。例如,在初始化 USART 或 UART 接口时应仔细核对参数设定。 ```c // 配置USART波特率为115200bps UART_HandleTypeDef huart1; huart1.Instance = USART1; huart1.Init.BaudRate = 115200; // 设置正确的波特率 HAL_UART_Init(&huart1); ``` #### 2. 字符编码格式不符 不同的开发工具链可能会采用不同默认的文字编码方式。对于中文字符而言,常见的编码标准包括 UTF-8 和 GBK/GB2312 等。为了使串口通信两端能够互相理解所传输的内容,双方需保持一致的编码形式[^2]。 建议将源代码文件保存为 ANSI 编码(即 Windows 下常用的 GB2312)。可以在编辑器中调整文件编码选项或将现有文件转换为所需格式后再加载到项目中。另外,在 VS2017 加 Keil 的混合编程环境中,可以通过如下方式进行处理: - 在 Visual Studio (VS) 中创建 C/C++ 文件时选择 "未设置" 或者 “多字节”; - 在 Keil uVision IDE 内部维持默认的 ANSI 编码设置不变; 这样可以有效减少由于编码差异引起的乱码现象[^3]。 #### 3. 晶振频率偏差影响定时精度 外部晶振的选择及其稳定性直接影响着 MCU 定时功能的工作准确性。如果实际使用的晶体振荡器与工程配置中的预设值存在较大差距,则会影响内部时钟树计算结果进而造成通讯速率失准。因此务必确认硬件电路板上的外挂晶振规格同软件设计文档相符,并适当调节相关寄存器数值以补偿潜在误差[^4]。 综上所述,针对上述提到的各种可能性逐一排查并采取相应措施后应该能较好地解决问题。同时也要注意检查连接线缆质量良好无损毁情况发生以免引入额外干扰因素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值