您的位置 首页 电路

STM32F051 写外部中止过程

STM32F051的中断特性如下:Cortex-M0的中断系统比较复杂,要想系统能响应中断,整体的配置步骤也多,下面以GPIOA0外接一个BUTTON,电路…

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上升沿触发
NVIC_EnableIRQ (EXTI0_1_IRQn); //答应外部中止0、1
NVIC_SetPriority ( EXTI0_1_IRQn, 2); //设置外部中止0、1的中止优先等级
}
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芯片答应中止一向挂起。
NVIC_EnableIRQ (EXTI0_1_IRQn); //答应外部中止0、1
NVIC_SetPriority ( EXTI0_1_IRQn, 2); //设置外部中止0、1的中止优先等级
这两个函数界说来自于文件core_cm0.h。
STM32F0xxx Cortex-M0 programming manual》中对中止有如下的界说:
更多更多关于反常和NV%&&&&&% 编程的阐明请参阅《STM32F0xxx Cortex-M0 programming manual》。
各个中止的进口程序的怎样写?
在KEIL自带的发动文件中有描绘。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/317187.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部