OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4190|回复: 2

STM32F103 串口2发送数据死机

[复制链接]

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2019-10-23
在线时间
54 小时
发表于 2022-5-3 23:18:06 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 wfyggi 于 2022-5-3 23:26 编辑

大家好,请问大家是否有跟我一样的情况。使用串口2,每隔100mS发送一次数据包并且同时串口会有返回一个数据,刚开始工作正常,但是偶尔会有一次将主程序卡死,后面多次分析,每卡死的位置都是串口发送完成判断这里 “ while((USART2->SR&0X40)==0)” 。
void UART2_send_Buf(u8 *stl,u8 Size,u8 a,u8 b,u8 c)
{
    if(b==1)
    {                        
                while(Size--)
                {        
                  USART2->DR=*stl;              // 赋值到串口数据寄存器                                       
                  while((USART2->SR&0X40)==0);   // USART1_SR_TC 等待串口发送结束                        
                  stl++;
                }        
    }
}



UART2_send_Buf(str,6,0,1,0);   // str是一个数组:30 33 30 39 31 30


希望对串口比较熟悉的朋友能一起讨论,指导一下,谢谢!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

456

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1072
金钱
1072
注册时间
2021-4-26
在线时间
352 小时
发表于 2022-5-5 12:04:36 | 显示全部楼层
从这些中看不出问题的,只能建议在循环等待中加个延时试试,不一定能解决
回复

使用道具 举报

9

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
933
金钱
933
注册时间
2020-1-6
在线时间
121 小时
发表于 2022-5-6 16:20:34 | 显示全部楼层
本帖最后由 方正波 于 2022-5-6 16:23 编辑

不知道具体是啥情况,但感觉好像是队列的问题啊。总共就那么大,发的远远比释放的要多的多,所以可能会死机
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 18:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表