访问手机版页面
STM32F0(3)EXTI 外部中断配置
内容导读:
// 引脚 PA0 的外部中断配置void Key_GPIO_Init(void){// 设置 PA0 口为上拉输入模式RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // 打开该引脚的GPIO时钟GPIOA->MODER &= ~GPIO_MODER_MODER0_1; // 设置为输入模式GPIOA->M

// 引脚 PA0 的外部中断配置

void Key_GPIO_Init(void)

{

// 设置 PA0 口为上拉输入模式

RCC->AHBENR |= RCC_AHBENR_GPIOAEN; // 打开该引脚的GPIO时钟

GPIOA->MODER &= ~GPIO_MODER_MODER0_1; // 设置为输入模式

GPIOA->MODER &= ~GPIO_MODER_MODER0_0;

GPIOA->PUPDR &= ~GPIO_PUPDR_PUPDR0_1; //上拉 == 相当于设置初始电平为 1

GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_0; // 如果设置为下拉的话,初始电平为 0

// 设置 PA0 外部中断的响应方式 -- 上升沿 和 下降沿 触发

EXTI->IMR |= EXTI_IMR_MR0; // 外部中断线开关

EXTI->EMR |= EXTI_EMR_MR0; // 外部中断事件开关

EXTI->FTSR |= EXTI_FTSR_TR0; // 下降沿触发

EXTI->RTSR |= EXTI_RTSR_TR0; // 上升沿触发

// 开外部中断及优先级配置

// 优先级数值为 0x000000c0 (越大优先级越低) -- 每个优先级占8位

NVIC->IP[EXTI0_1_IRQn / 4] |= (0x000000c0 << (8 * (EXTI0_1_IRQn % 4))); // 设置优先级

NVIC->ISER[0] |= (1 << EXTI0_1_IRQn); // 打开外部中断

}

// 中断处理函数

void EXTI0_1_IRQHandler(void)

{

EXTI->PR |= EXTI_PR_PR0; 需要手动清除标志位

if(根据当前引脚的当前状态来判断该引脚是上升沿 或 下降沿 产生的中断)

//

}


标签: exti,stm32f0,外部中断配置,
来源:互联网 作者:karen 时间:2018/12/31 18:20:01
相关阅读
推荐阅读
阅读排行
最近更新
商品推荐