下面是一个简单的代码示例,假设你想要配置 PB3 为上升沿触发的外部中断:
#include "stm32f1xx.h"
void EXTI3_IRQHandler(void) {
// 处理中断事件
// 清除中断标志
EXTI->PR |= EXTI_PR_PR3;
}
int main(void) {
// 启用外部中断中断线
NVIC_EnableIRQ(EXTI3_IRQn);
// 使能时钟
RCC->APB2ENR |= RCC_APB2ENR_AFIOEN;
// 配置 PB3 为浮空输入
GPIOB->CRL &= ~(GPIO_CRL_MODE3 | GPIO_CRL_CNF3);
GPIOB->CRL |= GPIO_CRL_CNF3_0;
// 配置外部中断触发模式为上升沿触发
EXTI->RTSR |= EXTI_RTSR_TR3;
// 选择 PB3 为外部中断线路 3
AFIO->EXTICR[0] &= ~(AFIO_EXTICR1_EXTI3);
// 使能外部中断线路 3
EXTI->IMR |= EXTI_IMR_MR3;
while (1) {
// 主循环
}
return 0;
}
|