STM32F051的中止特性如下:
Cortex – M0的中止体系比较复杂,要想体系能呼应中止,全体的装备过程也多,下面以GPIOA0外接一个BUTTON,电路如下:
设置中止的过程如下:
void SysInitConfig(void) //中止寄存器装备,及中止引脚的装备
{
RCC->AHBENR |= 1<<17; //使能GPIOA的时钟
GPIOA->MODER &= ~(0x03<<1);//置GPIOA0为输入形式
RCC->APB2ENR |= 1<<0; //使能SYSCFG时钟
SYSCFG->EXTICR[0] = 0<<0; //装备GPIOA0为外部中止0
EXTI->IMR |=1<<0; //打开线0上的中止请求
EXTI->RTSR |=1<<0; //设置GPIOA0上升沿触发
}
int main (void)
{
SysInitConfig();
……
while (1); //等候中止
}
void EXTI0_1_IRQHandler (void) //中止进口程序
{
EXTI->PR = 1<<0 ; //铲除PR挂起位
……
}
经以上装备,就可以将PA0作为外部中止了。仅仅怎样启用了多个外部中止,比方启用了中止0、中止1的话,他们共用一个中止进口地址,所以需要在进入中止后,判别一下是来自那个线的中止即可。
中止程序中EXTI->PR = 1<<0 ;这句子有必要启用,否则老是中止回来后又进入中止。由于Cortex - M0芯片答应中止一向挂起。
这两个函数界说来自于文件core_cm0.h。
《STM32F0xxx Cortex-M0 programming manual》中对中止有如下的界说:
更多更多关于反常和NV%&&&&&% 编程的阐明请参阅《STM32F0xxx Cortex-M0 programming manual》。
各个中止的进口程序的怎样写?
在KEIL自带的发动文件中有描绘。
在KEIL自带的发动文件中有描绘。