2
NXP LPC1788과 같은 ARM Cortex-M3에서 인터럽트 설정 보류 레지스터 또는 인터럽트 클리어 업 보류 레지스터를 사용하는 이유는 무엇입니까?인터럽트 보류 중 ARM Cortex-M3 예
누군가이 레지스터를 사용하여 간단하고 표준적인 예를 제공 할 수 있습니까?
NXP LPC1788과 같은 ARM Cortex-M3에서 인터럽트 설정 보류 레지스터 또는 인터럽트 클리어 업 보류 레지스터를 사용하는 이유는 무엇입니까?인터럽트 보류 중 ARM Cortex-M3 예
누군가이 레지스터를 사용하여 간단하고 표준적인 예를 제공 할 수 있습니까?
내가 생각할 수있는 유일한 유스 케이스는 GPIO 인터럽트 처리기와 같이 우선 순위가 낮은 소프트웨어 절충 모드를 우선 순위가 높은 IRQHandler로 트리거하는 것입니다.
일반적으로 PendSV를 사용하지만 두 개 이상의 작업 또는 우선 순위 수준이있는 경우 사용하지 않는 주변 예외 벡터를 사용할 수 있습니다. Sleep-on-Exit 기능을 사용하는 프로그램에서 유용 할 수 있습니다 - μ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);
}
지금까지 해보신 것은 무엇입니까? 이 코어에서 ARM의 인터럽트 컨트롤러 설명서를 보았습니까? –
@dwelch 예, 사용자 설명서를 읽었습니다. NVIC 및 다양한 인터럽트 지우기 레지스터를 사용하고 있습니다. Set-Pending 및 Clear-Pending 레지스터에 공통적 인 사용이 있는지 궁금합니다. –