工具与软件:
我正在使用 TM4C1233E6PZ 控制器和我正在使用 3个中断
- UART ISR
- GPIO ISR
- 计时器 ISR
我想知道、这些 ISR 是否自动处理启用和禁用全局中断?
实际上、我想要该、如果 ISR 已触发、则不会再触发其他 ISR 触发事件。
我的 ISR 是:-
extern "C" void DEBUGUARTIntHandler(void)
{
uint32_t ui32Status;
// Get the interrrupt status. //
ui32Status = UARTIntStatus(UART4_BASE, true);
static int msglen=0,datacnt=0;
char tmpudr;
UARTIntClear(UART4_BASE, ui32Status);
// Loop while there are characters in the receive FIFO. //
while(UARTCharsAvail(DEBUG_UART_BASE))
{
tmpudr = UARTCharGetNonBlocking(UART4_BASE);
UARTCharPutNonBlocking(UART4_BASE, tmpudr);
// data handling
}
}
void SysTickIntHandler(void)
{
// static uint16_t ADC_RAW = 0;
if(u32DelayCounter != 0U)
{
u32DelayCounter--;
}
}
extern "C" void GPIODIntHandler(void)
{
uint8_t inputPinSts = 0;
uint32_t EXTI_Sts = GPIOIntStatus(GPIO_PORTD_BASE, true);
GPIOIntClear(GPIO_PORTD_BASE, EXTI_Sts);
if(EXTI_Sts)
{
EXTI_Sts = 0;
inputPinSts = GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_2)/GPIO_PIN_2;
if(inputPinSts)
{
// GPIOPinWrite(LED_PORT_BASE, LED2_PIN, GPIO_HIGH);
GPIOPinWrite(LED_PORT_BASE, LED2_PIN, LED2_PIN);
}
else
{
GPIOPinWrite(LED_PORT_BASE, LED2_PIN, GPIO_LOW);
// GPIOPinWrite(LED_PORT_BASE, LED2_PIN, LED2_PIN);
}
}
}


