OpenEdv-开源电子网

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

关于用STM32F0做的串口中断收发程序,只运行一次问题

[复制链接]

32

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
385
金钱
385
注册时间
2011-11-21
在线时间
32 小时
发表于 2020-8-6 15:29:04 | 显示全部楼层 |阅读模式
1金钱
微信截图_20200806152458.png
上图是串口收发程序,只运行一次就卡死了,指示灯也不量了,不知道是什么原因?

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

使用道具 举报

0

主题

81

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
366
金钱
366
注册时间
2017-2-13
在线时间
125 小时
发表于 2020-8-6 17:01:47 | 显示全部楼层
1. 截图说明不了什么问题
2. 先看下程序最后停哪里

回复

使用道具 举报

5

主题

152

帖子

0

精华

高级会员

Rank: 4

积分
777
金钱
777
注册时间
2016-7-15
在线时间
119 小时
发表于 2020-8-6 17:04:44 | 显示全部楼层
串口中断里面不要用打印Printf,这样会触发另外的串口中断,直接死机了
好好学习,天天向上。
回复

使用道具 举报

6

主题

279

帖子

0

精华

高级会员

Rank: 4

积分
750
金钱
750
注册时间
2015-3-27
在线时间
98 小时
发表于 2020-8-9 18:17:02 | 显示全部楼层
给的信息好少,不好判断,另外原子的延时函数参数不宜过大:
//延时nms
//注意nms的范围
//SysTick->LOAD为24位寄存器,所以,最大延时为:
//nms<=0xffffff*8*1000/SYSCLK
//SYSCLK单位为Hz,nms单位为ms
//对72M条件下,nms<=1864
void delay_ms(u16 nms)
{                                     
        u32 temp;                  
        SysTick->LOAD=(u32)nms*fac_ms;                        //时间加载(SysTick->LOAD为24bit)
        SysTick->VAL =0x00;                                   //清空计数器
        SysTick->CTRL=0x01 ;                                  //开始倒数  
        do
        {
                temp=SysTick->CTRL;
        }while((temp&0x01)&&!(temp&(1<<16)));        //等待时间到达   
        SysTick->CTRL=0x00;                                       //关闭计数器
        SysTick->VAL =0X00;                                       //清空计数器                      
}
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-30 12:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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