打印
[RTOS]

为什么定时器初始化要放在消息队列的后面,而不是前面?

[复制链接]
2759|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主

这里为什么说定时器初始化要放在消息队列后面?

使用特权

评论回复
沙发
ArterySW| | 2021-7-13 19:25 | 只看该作者
因为在定时器中断内会向消息队列里发送消息,如果在创建消息队列之前就启动了定时器,由于定时器中断来的比较快,这时消息队列又还没创建,OS就会死了。

使用特权

评论回复
板凳
自己造声卡| | 2021-7-14 16:25 | 只看该作者
OS是否可以死掉,可以判断出来吗?或者软件跳转出来。

使用特权

评论回复
地板
hejun96| | 2021-7-14 18:59 | 只看该作者
ArterySW 发表于 2021-7-13 19:25
因为在定时器中断内会向消息队列里发送消息,如果在创建消息队列之前就启动了定时器,由于定时器中断来的比 ...

最近正好在F403A上用MessageQueue

使用特权

评论回复
5
ArterySW| | 2021-7-14 19:46 | 只看该作者
自己造声卡 发表于 2021-7-14 16:25
OS是否可以死掉,可以判断出来吗?或者软件跳转出来。

你可以动手调试一下看看

使用特权

评论回复
6
里面有晴雨| | 2021-7-16 09:07 | 只看该作者
这个怎么调试,我也遇到相同的问题,不知道怎么搞比较好一些。

使用特权

评论回复
7
ArterySW| | 2021-7-16 09:28 | 只看该作者
里面有晴雨 发表于 2021-7-16 09:07
这个怎么调试,我也遇到相同的问题,不知道怎么搞比较好一些。

第一步:不改变源程序将程序下载到AT32 MCU中,运行。可以看到代码运行ok
第二步:将定时器初始化这一句代码挪到main函数中,比如GPIO_TOGGLE_Init()后面
第三步:进入调试模式,运行,可发现代码卡死在了xQueueSendFromISR()函数中的configASSERT()断言函数中

这样就是调试的过程,系统卡死了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:资深专家
简介:丰富的嵌入式软硬件开发管理经验; 丰富的项目管理经验并具备敏锐的市场嗅觉; 丰富的产品的供应链资源及工厂管控能力; 具备很强的产品落地经验(从产品企划到产品量产);

107

主题

2306

帖子

9

粉丝