硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4904|回复: 3
收起左侧

[FreeRTOS] FreeRTOS的开关中断函数 taskDISABLE_INTERRUPTS()和taskENABLE_INTERRUPTS()

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
发表于 2015-8-18 18:00:11 | 显示全部楼层 |阅读模式
/**
* task. h
*
* Macro to disable all maskable interrupts.
*
* \defgroup taskDISABLE_INTERRUPTS taskDISABLE_INTERRUPTS
* \ingroup SchedulerControl
*/
#define taskDISABLE_INTERRUPTS()           portDISABLE_INTERRUPTS()

/**
* task. h
*
* Macro to enable microcontroller interrupts.
*
* \defgroup taskENABLE_INTERRUPTS taskENABLE_INTERRUPTS
* \ingroup SchedulerControl
*/
#define taskENABLE_INTERRUPTS()        portENABLE_INTERRUPTS()
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2016-4-3 14:16:00 | 显示全部楼层
与这两个是一样的效果吗
__set_PRIMASK(1)
__set_PRIMASK(0)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107527
QQ
 楼主| 发表于 2016-4-4 01:18:55 | 显示全部楼层
有区别,具体可以看源码实现,FreeRTOS开关中断使用的是BASEPRI寄存器。
回复

使用道具 举报

22

主题

29

回帖

95

积分

初级会员

seansun77

积分
95
发表于 2016-4-4 03:31:31 | 显示全部楼层
RTOS的关闭中断函数会关掉硬体中断吗?

因为我enable了一个Timer 3, 每1ms计数一次,累加全域变数, 然后用 taskDISABLE_INTERRUPTS()和taskENABLE_INTERRUPTS(), 发觉Timer3还是会累加全域变数, 除非真的把Timer3 disable, 才不会累加全域变数.

我疑惑task DISABLE_INTERRUPTS()和tasks ENABLE_INTERRUPTS()所指的中断是什么???
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-4 20:42 , Processed in 0.168842 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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