STM32 串口通信协议简单教程 一、修改串口UART1IT 工程模版 用Keil MDK 打开短学期资料中的工程示例→串口→UART1IT 示例,查看 main
c 代码如图 1 所示: 图 1 UART1IT 串口示例代码 打开文件列表中的stm32f10x_it
c 文件,找到 UART1 中断函数如图 2 所示代码: 图 2 UART1 串口中断函数 为方便起见,将整个USART1_IRQHandler 函数剪切到main
c 文件末尾如图3 所示
并删除 stm32f10x_it
c 文件中的 sp 变量定义,如图4 所示
图3 移动串口中断函数 图4 去除 stm32f10x_it
c 中的 sp 变量声明 重新编译一次工程,看看修改是否出现错误,编译失败出现错误则需仔细检查刚才的修改是否正确
编译成功,下载工程到实验板,关闭下载程序
将实验板 BOOT 跳线至正常运行模式并重新上电
打开串口调试助手,选择实验板 USB 虚拟串口并打开,如图5 所示
可以看到图中窗口不停的接收到“Hello world
”这样的字符串数据
在发送区域输入字符 1,点击发送按钮,可以观察到实验板的流水灯速度变快了很多
图5 PC 端串口调试助手和STM32 进行串口通信 二、简单串口协议实现 1
发送按键状态 首先,了解串口协议要求如下: 协议数据帧头:0x36 0x4D(2 字节) 协议数据帧尾:0x0D(1 字节) 校验方式:帧头与有效数据的单字节加和ASCII 码(2 字节) 如 0x36 0x4D 0x2B 0x31 加和为 0xDF,那么最后的校验码为 0x44 0x46 两个字节,实际发送帧为 0x36 0x4D 0x2B 0x31 0x44 0x46 0x0D 按键状态 单片机发送:帧头+0x4B+键码+状态+校验和+帧尾 其中键码用0x32