CLW_WEI 发表于 2012-8-21 23:06:58

除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断...

我在设计中要利用__disable_irq();__enable_irq()来实现原子操作,防止中断与正常运行程序同时访问数据造成不一致,但是这个是暂时屏蔽全局中断的。我系统中有个最高优先级的是不能屏蔽太久的。有没有什么函数是可以暂时屏蔽某个中断的(如EXIT中断,需要在屏蔽时来的中断在退出屏蔽之后可以响应)

ImCQ 发表于 2012-8-22 08:20:05

回复:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

这样的话,自己手动写个函数好了,禁止不用的中断!

xiaodc88 发表于 2012-8-22 09:09:18

回复:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

用操作系统的互斥也可以吧

CLW_WEI 发表于 2012-8-22 09:33:16

回复:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

禁止某个中断是可以,但是禁止期间有来中断,重新打开后这个中断是不会响应的

发表于 2012-8-22 14:23:36

RE:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

用关闭中断标志位的方式.:o

CLW_WEI 发表于 2012-8-22 21:51:26

回复:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

*******************************************************************************
* Function Name: __set_BASEPRI.
* Description    : 屏蔽value中断优先级等级下的中断.
* Input          : None.
* Output         : None.
* Return         : None.
*******************************************************************************/
/*void __set_BASEPRI(uint32_t value)
{
__ASM volatile ("MSR basepri, %0" : : "r" (value) );
}*/
这个函数可以关闭一定优先级下的所有中断,但关闭后有中断到来退出关闭之后是否可以响应,不得而知啊,有谁知道呢?

zykzyk-93033 发表于 2012-8-22 21:55:50

RE:除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断的函数

读取中断标志,应该是可以的吧!:D
页: [1]
查看完整版本: 除了__disable_irq();__enable_irq();之外还有没其他暂时屏蔽中断...