OpenEdv-开源电子网

 找回密码
 立即注册

扫一扫,访问微社区

正点原子全套STM32开发资料,上千讲STM32视频教程,RT1052教程免费下载啦...

查看: 104|回复: 4

FreeRTOS中断实验问题

[复制链接]

  离线 

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-5-5
在线时间
26 小时
发表于 2018-7-9 23:21:21 | 显示全部楼层 |阅读模式
正点原子公众号
按照 《STM32F103 FreeRTOS开发手册V1.1》 一步一步做的实验,在初始化的时候把time3_init()和time5_init()放在uart_init()前面,下载到板子里就没任何反应(串口不输出,LED灯也不闪),把两个定时器初始化放在串口初始化后面就正常运行结果跟教程一样,这是什么原因呢?(串口中断优先级为3,time3中断优先级为4,time5中断优先级为5)

正常运行

正常运行

系统异常

系统异常

回复

使用道具 举报

  离线 

72

主题

6545

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
13039
金钱
13039
注册时间
2013-11-13
在线时间
1491 小时
发表于 7 天前 | 显示全部楼层
看两个定时器中断服务函数!里面是不是用到了print通过串口打印信息!!你不先初始化串口,能正常工作了那才叫怪了
回复 支持 反对

使用道具 举报

  离线 

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-5-5
在线时间
26 小时
 楼主| 发表于 7 天前 | 显示全部楼层
zuozhongkai 发表于 2018-7-10 08:25
看两个定时器中断服务函数!里面是不是用到了print通过串口打印信息!!你不先初始化串口,能正常工作了那 ...

但是定时器从初始化完成到使用串口中间隔了1秒钟,这1秒钟串口还没有初始化完成吗
回复 支持 反对

使用道具 举报

  离线 

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-5-5
在线时间
26 小时
 楼主| 发表于 5 天前 | 显示全部楼层
zuozhongkai 发表于 2018-7-10 08:25
看两个定时器中断服务函数!里面是不是用到了print通过串口打印信息!!你不先初始化串口,能正常工作了那 ...

原因找到了,要先清除中断标志位再使能更新中断,如果顺序反过来使能更新中断之后就会立即进入一次中断,这时就会在定时器中断服务函数里立即调用printf函数,而此时串口还没有初始化,这样程序就会卡在while((USART1->SR & 0X40) == 0);这里无限循环就是死机了。
回复 支持 反对

使用道具 举报

  离线 

11

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-5-5
在线时间
26 小时
 楼主| 发表于 5 天前 | 显示全部楼层
回复 支持 反对

使用道具 举报

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

本版积分规则




关闭

"原子哥”推荐上一条 /1 下一条

QQ|联系我们|手机版|官方淘宝店|新浪微博|微信公众平台|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2018-7-17 08:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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