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



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

我搜索了很多,但我找不到任何有用的信息,谁能告诉我在哪里找到确切的位和如何编辑它,如果我需要一些特殊的程序?

如果在解释之后告诉我在哪里可以找到这些信息,那就太好了(以学习如何回答任何其他问题)。

CMSIS为基于Cortex-M的设备提供了一个标准的跨厂商软件接口。CMSIS定义了许多与NVIC和PRIMASK交互的函数,包括本函数__disable_irq()/__enable_irq()

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)的所有相关文件。这些都是免费的,有些需要注册。

对于NVIC,您不应该直接访问它,而是使用TI为该MCU提供的CMSIS头文件(头文件需要一些特定于设备的设置)。如果不可用,您可以从ARM获得它们,但必须自己提供特定于设备的设置(它们很少,并且在MCU的参考手册中给出)。

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

要使用Cortex-M4,您应该阅读给出的文档,或者您可以尝试与一本好书。然而,由于本网站不是教程网站,也不允许推荐书籍,请自行搜索。

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

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

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

最新更新