STM32的USRT通讯实现

本文介绍了如何在STM32开发板上实现UART通讯,包括选择两块STM开发板,设置串口初始化和中断,以及详细阐述了协议制定的关键点,如起始符、结束符、校验位的选择,并提到了CRC校验。文中还给出了一个具体的UART通讯协议实例,涉及UART4的初始化和中断函数的实现。
摘要由CSDN通过智能技术生成

STM32的USRT通讯实现

1.实现平台

两块STM开发板,杜邦线;

  1. 初始化板子上的串口;
  2. 为串口开启中断;
  3. 根据需要制定两个板子的通讯协议。

2.实现过程

2.1协议制定

在工程实践的过程中,常常需要两个板子进行通讯来实现功能。现在常常使用的通讯方法常常是CAN通信,TTL通讯,RS485通讯,RS232通讯,I2C,I2S,SPI等。UART也是一种常用的通讯方式,这种通讯方式为全双工。

制定协议时应注意以下几点:

  1. 起始符,结束符和校验位 在为制定通讯协议的时候,首先应该确定发送数据的起始符,结束符和校验位;在设置起始符,结束符的时候应该避免和发送的内容发生冲突。结束符最好可以设置多位,一般可以设置两个位作为结束符;校验位需要在结束符之前;起始位一般没有特殊要求的话,设置一位即可。

  2. 校验方式

一般校验方式可以是奇检验,偶校验,CRC校验。现在用的较多的是CRC校验,CRC校验可以看引用的第三篇博文,讲的比较清楚。

接下来给个UART通讯例子:

通讯协议:

该协议中,起始符是0x44和0x59;结束符是0xFF,0x0A;

接下来介绍实现

实现在STM32ZET6开发板上,UART4,正点原子

UART4初始化:

STM32的USART(通用串行总线)模块R3通常指的是USART3,它是STM32微控制器系列中用于串行通信的标准外设。如果遇到USART3卡死的问题,可能的原因和解决方法有: 1. **硬件故障**:检查连接线路是否正确,包括电源、TX/RX引脚、中断线等,确保它们没有短路或断开。检查外部元件如 crystal oscillator 是否正常工作。 2. **软件配置错误**:确认USART3的工作模式、波特率、数据位数、停止位设置等是否正确配置,并且是否有误操作导致的数据发送/接收不匹配。 3. **程序错误**:查看代码中与USART3相关的部分,可能是数据溢出、死锁循环、异常处理不当等情况。确保在发送数据后能及时接收应答或在接收数据后正确处理。 4. **中断管理问题**:如果启用并使用了USART3中断,检查中断服务函数(ISR)的处理是否恰当,以及系统堆栈是否足够,防止由于中断嵌套过深而导致栈溢出。 5. **资源冲突**:确认其他任务或中断是否抢占了USART3的资源,可能需要调整优先级或者暂时禁用这些冲突的任务。 6. **调试工具问题**:有时候,如果使用的调试器设置不当,也可能会引起类似卡死的情况。检查JTAG/SWD连线和调试器配置。 为了解决这个问题,你可以尝试以下几个步骤: - 使用示例代码测试基本功能,排除基础配置问题。 - 在代码的关键点加入日志或者断点,观察运行过程。 - 如果条件允许,尝试烧录固件到新板子上,看看问题是否依然存在,帮助定位问题源。 如果你提供更具体的信息,我可以给出更针对性的帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值