在ARM Cortex-M4F MCU(特别是TM4C1294NCPDT)中,为了处理中断(GPIO中断),使中断工作的一个步骤是清除I BIT。
我搜索了很多,但我找不到任何有用的信息,有人可以告诉我在哪里可以找到那个位,如果我需要一些特殊的程序,如何编辑它?
如果我被告知在解释后请在哪里找到该信息,那将是很好的(了解如何在任何其他问题上回答自己)。
答案 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()
函数。