:GPIO八大模式与中断系统(NVIC))
前言 欢迎来到STM32期末复习系列的第三篇上一篇我们搞定了最小系统单片机现在能正常通电“活”过来了。接下来单片机要和外部世界打交道比如点亮LED、读取按键、连接传感器就必须通过它的“手和脚”——GPIO通用输入输出端口。 同时我们还要复习单片机的“条件反射”机制——中断系统。这两个知识点不仅是期末考试必考的代码填空/简答题更是以后做项目的基本功考点一GPIO的八大工作模式⭐️⭐️⭐️⭐️⭐️ 必考选择/简答STM32的每一个GPIO引脚都可以被配置成8种工作模式4种输入4种输出。考试常考在什么场景下应该选择哪种模式1. 四种输入模式单片机接收外部信号模拟输入 (Analog Input,GPIO_Mode_AIN)大白话不管外面的信号是几伏原封不动地传给单片机内部。应用场景ADC模数转换专属。比如你要测电压、测温度传感器的模拟信号。浮空输入 (Floating Input,GPIO_Mode_IN_FLOATING)大白话引脚悬空电压不确定容易受干扰。外部给什么电平单片机就读到什么电平。应用场景通常用于串口USART的接收引脚RX。上拉输入 (Pull-Up Input,GPIO_Mode_IPU)大白话内部接了一个电阻到电源3.3V。如果外部没有信号输入引脚默认就是高电平。应用场景按键检测。按键一头接地另一头接GPIO配置为上拉。不按时是高电平按下就是低电平。下拉输入 (Pull-Down Input,GPIO_Mode_IPD)大白话内部接了一个电阻到地GND。外部没信号时默认是低电平。2. 四种输出模式单片机向外部输出信号推挽输出 (Push-Pull Output,GPIO_Mode_Out_PP)大白话可以输出强有力的“高电平”和“低电平”带载能力强能直接驱动一些小器件。应用场景点亮LED灯、控制蜂鸣器、控制继电器。开漏输出 (Open-Drain Output,GPIO_Mode_Out_OD)大白话只能输出低电平。如果要输出高电平必须依靠外部接“上拉电阻”把它拉高。应用场景IIC总线SDA、SCL通信。复用推挽输出 (Alternate Function Push-Pull,GPIO_Mode_AF_PP)大白话引脚不作为普通的GPIO用了而是借给单片机内部的其他外设比如串口当输出用。应用场景串口USART的发送引脚TX、SPI引脚、PWM输出。复用开漏输出 (Alternate Function Open-Drain,GPIO_Mode_AF_OD)大白话借给内部外设用同时具有开漏的特性。应用场景硬件IIC引脚。考点二GPIO标准库配置三步曲⭐️⭐️⭐️ 代码填空题考试如果出代码填空题通常是让你初始化一个LED或者按键。一定要记住这三步开启时钟STM32为了省电外设默认是不通电的用之前必须开时钟。// 开启GPIOB的时钟 (APB2总线) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);定义结构体并配置参数GPIO_InitTypeDef GPIO_InitStructure; // 定义结构体变量 GPIO_InitStructure.GPIO_Pin GPIO_Pin_5; // 选定引脚(比如PB5) GPIO_InitStructure.GPIO_Mode GPIO_Mode_Out_PP; // 选择推挽输出(LED) GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz; // 设置输出速度调用Init函数初始化GPIO_Init(GPIOB, GPIO_InitStructure); // 把刚才的配置真正写进寄存器 高频考点修改GPIO电平状态的函数让引脚输出高电平GPIO_SetBits(GPIOB, GPIO_Pin_5);让引脚输出低电平GPIO_ResetBits(GPIOB, GPIO_Pin_5);考点三中断系统与NVIC⭐️⭐️⭐️⭐️ 核心概念1. 什么是中断单片机正在执行主程序突然外部发生了一个紧急事件比如按键被按下了或者串口收到数据了单片机暂停主程序去处理这个紧急事件处理完了再回来继续执行主程序。2. NVIC嵌套向量中断控制器STM32的中断非常多为了防止“打架”就有了NVIC这个大管家来分配优先级。考试常考以下两种优先级的区别抢占优先级 (Preemption Priority)决定能不能“插队”。如果A的抢占优先级高于B当B正在执行中断时A发生了A可以强行打断B等A执行完再接着执行B。这就是中断嵌套。响应优先级 / 子优先级 (Subpriority)决定“谁先上”。如果A和B的抢占优先级一样那么它们不能互相打断。但如果它们同时发生响应优先级高的先执行。⚠️ 考试避坑指南 在STM32中优先级数值越小优先级越高0的优先级最高15的优先级最低。3. 外部中断EXTIEXTI可以将GPIO的电平变化上升沿、下降沿或双边沿作为中断触发的条件。注意STM32所有的PA0、PB0、PC0... 都共用一条外部中断线EXTI0。所以PA0和PB0不能同时被配置为外部中断。复习建议这一章主要拿下GPIO的8种模式记住它们对应的英文缩写比如PP代表推挽OD代表开漏并理解中断抢占和响应的区别。下一篇我们将进入通信篇手撕期末大戏——串口通信USART与DMA