对于ARM Cortex-M3,例如恩智浦LPC1788,为什么有人要使用中断设置挂起寄存器或中断清除挂起寄存器?
谁能提供一个使用这些寄存器的简单、规范的示例?
发布于 2012-08-02 20:10:46
我能想到的唯一用例就是从高优先级IRQHandler触发低优先级软件退出--就像GPIO中断处理程序一样。
通常情况下,您可以使用PendSV,但是当您有多个任务或优先级时,您可以使用任何未使用的外围异常向量。可用于使用退出时睡眠功能的程序-µC仅在异常处理程序中运行。
// Example for LPC17xx
void ETHERNET_Handler (void)
{
// toggle LED on P0.4
LPC_GPIO0->FIODIR0 ^= (1<<4);
}
void main(void)
{
// set Ethernet IRQ to loewst Priority
NVIC_SetPriority(ENET_IRQn,31);
NVIC_EnableIRQ(ENET_IRQn);
NVIC_SetPendingIRQ(ENET_IRQn); // trigger Ethernet IRQ Handler
// ...
while (1);
}https://stackoverflow.com/questions/11444513
复制相似问题