打印
[STM32F1]

关于FreeRTOS关闭中断的一个问题

[复制链接]
398|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhanghqi|  楼主 | 2022-6-11 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
两个定时器做测试,timer1优先级为4,timer2优先级为13
下面:都配置为11
#define configMAX_SYSCALL_INTERRUPT_PRIORITY         191 /* equivalent to 0xb0, or priority 11. */
#define configLIBRARY_KERNEL_INTERRUPT_PRIORITY        11

当在一个任务里调用portDISABLE_INTERRUPTS(); 时,两个定时器都无法关闭。
但是调用vPortEnterCritical();时却可以正常关闭timer2,这个是正确的。
为何用portDISABLE_INTERRUPTS(); 不能关闭timer2呢?

使用特权

评论回复
沙发
zhanghqi|  楼主 | 2022-6-11 16:23 | 只看该作者
正点原子的视频里也提到portDISABLE_INTERRUPTS(); 是可以正常关闭的,求解

使用特权

评论回复
板凳
heweibig| | 2022-6-11 16:23 | 只看该作者
所以排除懒得去掉temp这种情况。

使用特权

评论回复
地板
dingy| | 2022-6-11 16:26 | 只看该作者
那就用原子的例程测试下呗

使用特权

评论回复
5
dengdc| | 2022-6-11 16:32 | 只看该作者
原子是f4+keil,我测试时f1+iar....

使用特权

评论回复
6
zwll| | 2022-6-11 16:34 | 只看该作者
跟一下啊,看看你掉用的函数到底干了啥

使用特权

评论回复
7
pengf| | 2022-6-11 16:36 | 只看该作者
应该是有个只是关闭了中断,有个连异常都关了,级别不一样吧

使用特权

评论回复
8
zhanghqi|  楼主 | 2022-6-11 16:38 | 只看该作者
看看源代码中 vPortEnterCritical 和 portDISABLE_INTERRUPTS 有什么不同?

使用特权

评论回复
9
zhanghqi|  楼主 | 2022-6-11 16:39 | 只看该作者

嗯,我再好好缕一缕吧,有了好消息及时通知大家

使用特权

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

本版积分规则

852

主题

11757

帖子

5

粉丝