重新整理一下笔记。
来自CPU外部的外设产生的紧急事件叫做中断,比如GPIO引脚电平变化;来自CPU内部产生的紧急事件叫做异常。 异常和中断的效果基本一致,都是暂停当前任务,优先执行紧急事件,因此一般将中断和异常统称为中断
中断优先级(16个可编程的优先等级 4位中断优先级 2的4次方=16)
stm32 有20个外部中断线,其中常用的有16个外部中断线
常用的16个外部中断线
配置过程如下:
以按键外部中断控制灯和蜂鸣器为例,在STM32cubemx 创建工程配置RCC选择外部晶振
修改时钟频率
配置GPIO 这里只放了按键的配置(外部中断)
配置输入模式 上升沿触发 上拉输入
使能中断向量
保存工程 。工程创建完毕
在keil 中打开工程。代码分析如下:
gpio.c文件中的 GPIO 初始化函数 使能GPIOA、GPIOB时钟
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOE_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
E2、E3引脚为按键外部中断
配置引脚触发模式 上升沿触发
上拉输入
LED、Beep 为普通GPIO
配置为推挽输出模式
没