[STM32F1] FreeRTOS关闭中断

[复制链接]
 楼主| pengf 发表于 2021-10-9 22:22 | 显示全部楼层 |阅读模式
两个定时器做测试,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呢?正点原子的视频里也提到portDISABLE_INTERRUPTS(); 是可以正常关闭的,求解
wuhany 发表于 2021-10-9 22:24 | 显示全部楼层
是不是这个函数需要自己实现底层的操作
jiaxw 发表于 2021-10-9 22:27 | 显示全部楼层

那就用原子的例程测试下呗
 楼主| pengf 发表于 2021-10-9 22:29 | 显示全部楼层
原子是f4+keil,我测试时f1+iar....
huangchui 发表于 2021-10-9 22:31 | 显示全部楼层
跟一下啊,看看你掉用的函数到底干了啥
wangpe 发表于 2021-10-9 22:32 | 显示全部楼层
应该是有个只是关闭了中断,有个连异常都关了,级别不一样吧
zhenykun 发表于 2021-10-9 22:34 | 显示全部楼层
看看源代码中 vPortEnterCritical 和 portDISABLE_INTERRUPTS 有什么不同?
zwll 发表于 2021-10-9 22:38 | 显示全部楼层
单步运行看看寄存器状态
llljh 发表于 2021-10-9 22:40 | 显示全部楼层
能跟寄存器相应的位对应上吗
 楼主| pengf 发表于 2021-10-9 22:43 | 显示全部楼层

嗯,预料中的结果,多谢大家啦
paotangsan 发表于 2021-11-2 14:49 | 显示全部楼层
手动关闭也不可以吗
keaibukelian 发表于 2021-11-2 15:00 | 显示全部楼层
寄存器不可以更改吗
labasi 发表于 2021-11-2 15:03 | 显示全部楼层
可以设置为运行一次就关闭吗
tpgf 发表于 2021-11-2 15:09 | 显示全部楼层
中断级别不一样吧
renzheshengui 发表于 2021-11-2 15:10 | 显示全部楼层
是不是可以直接disable呢
wakayi 发表于 2021-11-2 15:12 | 显示全部楼层
优先级怎么相差这么多
您需要登录后才可以回帖 登录 | 注册

本版积分规则

718

主题

10129

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部