stm32串口通信协议简单教程.docx
- 文档编号:15431004
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:10
- 大小:319.66KB
stm32串口通信协议简单教程.docx
《stm32串口通信协议简单教程.docx》由会员分享,可在线阅读,更多相关《stm32串口通信协议简单教程.docx(10页珍藏版)》请在冰点文库上搜索。
stm32串口通信协议简单教程
STM32串口通信协议简单教程
一、修改串口UART1IT工程模版
用KeilMDK打开短学期资料中的工程示例→串口→UART1IT示例,查看main.c代码如图1所示:
图1UART1IT串口示例代码
打开文件列表中的stm32f10x_it.c文件,找到UART1中断函数如图2所示代码:
图2UART1串口中断函数
为方便起见,将整个USART1_IRQHandler函数剪切到main.c文件末尾如图3所示。
并删除stm32f10x_it.c文件中的sp变量定义,如图4所示。
图3移动串口中断函数
图4去除stm32f10x_it.c中的sp变量声明
重新编译一次工程,看看修改是否出现错误,编译失败出现错误则需仔细检查刚才的修改是否正确。
编译成功,下载工程到实验板,关闭下载程序。
将实验板BOOT跳线至正常运行模式并重新上电。
打开串口调试助手,选择实验板USB虚拟串口并打开,如图5所示。
可以看到图中窗口不停的接收到“Helloworld!
”这样的字符串数据。
在发送区域输入字符1,点击发送按钮,可以观察到实验板的流水灯速度变快了很多。
在main函数之前,添加按键扫描代码如图6所示,然后在main函数中,添加sendstr数组,key和oldkey两个整数变量,如图7所示。
图6添加按键扫描函数
图7添加相关变量
接下来,在main函数的while主循环中,添加发送按键状态代码如图8所示。
同时,将main函数中的Helloworld字符串发送行注释掉,如图9所示。
为使按键响应灵敏,可以将main.c文件开头的sp变量初始值由100改为10。
注意,资料包里面的串口调试助手UartAssit软件容易造成虚拟串口占用,甚至使系统崩溃。
考虑到使用方便,推荐使用sscom42软件。
这里给大家一个下载地址
图8main主函数中的发送按键状态代码
图9注释Helloworld发送行
编译并下载程序后,接上串口调试助手,我们可以看到调试助手窗口中的结果如图10所示。
由图中可以看到,调试助手接收到”6MK2D6MK2U”,这表示实验板按键K2被按下和放开两个动作。
图10串口调试助手结果
接下来,为完成协议要求,在main函数之前添加校验码函数代码如图11所示。
图11添加校验码函数代码
在发送按键状态帧之前,添加校验码函数如图12所示。
图12添加校验码操作
编译并下载程序后,接上串口调试助手,可以看到STM32串口发送按键状态数据帧如图13所示。
如图中所示,当按键K3按下时,STM32发送“6MK3D45”,其16进制数据为“364D4B334434350D0A”,0x36+0x4D+0x4B+0x33+0x44=0x0145,保留一个字节则为0x45。
0x45表示为两字节ASCII码,就是字符’4’和字符’5’,即对应“6MK3D45”最后两个字符。
由此可知,按键状态发送功能完成。
图14亮灯命令接收状态转换图
图15串口接收中断程序1
图16串口接收中断程序2
编译并下载程序,接上串口调试助手。
如图17所示,在调试窗口中选中“HEX发送”,然后在下方的发送行填入字符串“364D2B3100000D”。
点击“发送”按钮则可以看到接收栏中显示“OK!
”字符串。
在此,校验码0x000x00没有任何意义,只是占个位置。
图17串口调试助手发送数据
接下来,在main函数之前添加接收数据校验函数如图18所示。
图18接收数据校验函数
修改串口接收中断中的帧尾回送OK字符串程序行,如图19所示。
为了看到显示效果将main函数中的流水灯部分代码注释掉,如图20所示。
图19帧尾校验功能代码
图20main函数注释流水灯代码
编译成功并下载程序后,接上串口调试助手,如图21所示。
在调试窗口下方的发送行中填入发送字符串“364D2B3100000D”,选中“HEX发送”,点击发送按钮后可以看到接收栏中显示“Errchk,DF,00”字符串,表示正确的校验码应为字符’D’和字符’F’的ASCII码值。
点击窗口中的“HEX显示”可以将接收栏中的字符串显示为16进制代码,从中可以找到字符’D’和’F’的ASCII码值为0x44和0x46,修改发送行字符串为“364D2B3144460D”,再次点击发送,结果如图21所示。
要在实验板上看到效果,可以先发送灭灯命令“364D2D3145310D”,先将第一个灯关闭。
然后再发送亮灯命令即可观察到灯的亮灭效果。
由此可见STM32上的亮灯控制命令接收功能已经实现。
图20发送错误的命令帧图21发送正确的命令帧发送的亮灯命令帧,也可以不用HEX发送方式,例如点亮第一个灯,可以发送“6M+1DF”字符串(取消“HEX发送”选项,选中“发送新行”选项)。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- stm32 串口 通信协议 简单 教程