下面是一个简单的代码示例,假设你想要配置 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;
- }
|