在哪里找到I位以及如何编辑它以启用ARM Cortex-M4中的中断

时间:2015-06-06 09:15:43

标签: arm embedded microcontroller cortex-m

在ARM Cortex-M4F MCU(特别是TM4C1294NCPDT)中,为了处理中断(GPIO中断),使中断工作的一个步骤是清除I BIT。

我搜索了很多,但我找不到任何有用的信息,有人可以告诉我在哪里可以找到那个位,如果我需要一些特殊的程序,如何编辑它?

如果我被告知在解释后请在哪里找到该信息,那将是很好的(了解如何在任何其他问题上回答自己)。

3 个答案:

答案 0 :(得分:4)

CMSIS为基于Cortex-M的设备提供标准的跨供应商软件接口。 CMSIS定义了许多functions for interacting with the NVIC和PRIMASK,包括内在函数__disable_irq() / __enable_irq()

答案 1 :(得分:1)

ARM Cortex-M中断系统非常复杂且经过深思熟虑。它由CPU寄存器和紧密耦合的中断控制器(NVIC)组成。中断优先级和向量。对于较小的8/16位MCU,没有单个中断使能标志。

对于每个中断,有两个ARM内核实例将事件门控到CPU:CPU PRIMASK寄存器(单个位),可以看作与经典的中断使能标志最相似。第二个是NVIC中的一个使能位。对于这些,CMSIS标头中有一个ARM标准。它们为PRIMASK位提供函数__enable_irq()__disable_irq()。外设中断本身必须由NVIC_EnableIRQ(IRQn_Type IRQn)控制,其中IRQn是MCU特定头文件中定义的中断号。

最后,大多数情况下,每个外设模块中的中断使能位都会被较小的MCU所知。

请注意,必须打开通过所有门的中断(所有位设置为"启用")。使用CMSIS函数来操作这些位。他们很可能不会采用比手工制作版本更多的说明。

修改

没有必要用汇编程序或寄存器来摆弄自己。只需使用CMSIS功能,您很可能自己不会做得更好,但可能更糟。这实际上是CMSIS的意图。

(结束编辑)

开始阅读MCU的参考手册和供应商的主页。这应该为设备提供参考和应用说明。您还应该阅读ARM的技术参考手册,体系结构参考手册。实际上,只需仔细查看CPU的所有相关文档(M4 for you)。这些是免费的,有些需要注册。

对于NVIC,您不应直接访问它,而应使用TI提供的CMSIS头文件来确切地说明此MCU(标头需要某些特定于设备的设置)。如果不可用,您可以从ARM获取它们,但必须自己提供设备特定的设置(它们很少,并在MCU的参考手册中给出)。

由于ARM Cortex-M4有多个中断,因此需要使用符号名称来启用/禁用。这些必须在MCU标题中定义,它也定义了所有外设模块(可能有多个这样的标题)。名称以_IRQn结尾,只搜索它。

要使用Cortex-M4,您应阅读所提供的文件,或者您可以尝试使用好书。但是,由于这不是教程网站,也不允许推荐书籍,请自行搜索。

答案 2 :(得分:0)

好的,我的问题最简单的答案是:

使用“CPSID I”或“CPSIE I”内联汇编代码,分别设置或清除PRIMASK(I)位。 (当然这只会在特权模式下工作)。

两个汇编指令分别等同于CMSIS中的__disable_irq()__enable_irq()函数。