全局中断总开关位与各个中断源对应的寄存器使能位开启顺序
在微控制器中,中断总开关通常用来全局性地控制中断的使能和关闭。对于各个中断的位使能,则是用来单独控制每个中断源的使能状态。配置它们的先后关系通常遵循以下步骤:
1.全局中断禁能:首先,需要禁止中断总开关,这通常通过操作特定的寄存器来实现,比如在Cortex-M3内核中,可以通过写入 PRIMASK 寄存器来控制全局中断的使能与关闭 。
2.配置中断优先级分组:在STM32等微控制器中,通过 NVIC_PriorityGroupConfig() 函数设置中断优先级分组,这决定了抢占优先级和响应优先级的位数分配 。
3.配置各个中断源的优先级:接着,为每个中断源配置优先级,包括抢占优先级和响应优先级。这通常通过 NVIC_Init() 函数来实现,它允许你为特定中断源设置优先级并使能它 。
4.使能各个中断源、开启全局中断:针对每个需要响应的中断源,通过设置相应的位使能位来单独使能该中断。在STM32中,可以使用 NVIC_EnableIRQ() 函数来使能特定的中断通道 。配置、使能各个所需中断源后,开启全局中断使能。
5.关于编写中断服务函数:提前为每个使能的中断编写中断服务函数(ISR),并根据软硬件平台要求挂接中断。当中断发生时,微控制器会自动调用相应的ISR来处理中断。在中断服务函数的最后,通常需要清除中断标志位,以便微控制器可以响应后续的中断请求。
在实际编程中,具体的寄存器名称和配置函数可能会根据微控制器的型号和体系结构而有所不同,但基本的配置流程大致相同。