2025-11-08 06:24:41
STM32开中断就像给手机设置闹钟一样简单。先找到外设对应的引脚,比如按键接PA0,然后在代码里写三行关键指令:先让PA0能触发中断,接着写好中断处理函数,开总中断开关。STM32io中断就是外设事件触发的那个处理程序,比如按键按下时自动执行的代码块。
为什么这么操作呢?因为STM32的中断系统需要分三步走。第一步配置外设时钟,比如STM32F103的PA0引脚需要开启GPIOA时钟,这个在HAL库里用__HAL_RCC_GPIOA_CLK_ENABLE搞定。第二步设置中断优先级,假设系统时钟72MHz,中断优先级分组用0x03,子优先级用0x08,这样能确保实时性。第三步调用NVIC_EnableIRQ开具体中断源,比如GPIOA的外部中断1。数据来源:STM32参考手册P276提到时钟使能必须放在外设初始化里,P293详细说明了优先级分组计算方式。就像煮饭要先开火再下米,顺序错了就会烧锅。代码里如果漏掉开总中断NVIC_EnableIRQ(GPIOD_IRQn),就像闹钟没上发条,再好的配置也没用。
本题链接: