【发布时间】:2020-12-07 21:18:22
【问题描述】:
我有一个外部中断(在 STM32F031K6 上运行)。我希望它尽可能快地运行——最好在 1uS 内。目前它的运行时间约为 2.2uS。中断如下
void EXTI4_15_IRQHandler(void)
{
if (ChangeFlag & 1<<3){
GPIOA->BSRR |= (1<<4);}
else
GPIOA->BSRR |= (1<<20);
ChangeFlag |= 1<<1;
if (ChangeFlag & 1<<2)
{
GPIOA->BSRR |= (1<<12);}
else
GPIOA->BSRR |= (1<<28);
ChangeFlag |= 1<<0;
EXTI->PR |= 1<<11; //turn off interrupt request
}
特别是像 GPIOA->BSRR |= (1
【问题讨论】:
-
你使用的是什么编译优化级别?
-
在不知道
ChangeFlag的类型的情况下不可能以明智的方式回答问题。是uint8_t、uint32_t还是别的什么?是volatile吗?