一 : 数据类型
- char int8_t uint8_t 8
- short int16_t uint16_t 16
- int int32_t uint32_t 32
二 : GPIO(General Purpose Input Output) 通用输入输出口
- 可配置8钟输入输出模式
- 输出模式下可控制端口输出高低电平 作用: 驱动LED 控制蜂鸣器 模拟通信协议
- 输入模式下可读取端口的高低电平或电压 作用: 读取按键输入 外接模块电平信号
- 基本构造:
5.寄存器每一位对应一个引脚 输出寄存器写1 对应的引脚就会输出高电平 写0 低电平
输入寄存器读取1 端口高电平 读取0为低电平
6.IO 端口位的基本结构 寄存器---驱动器---其中一个IO引脚
(1)上拉电阻VDD 下拉电阻VSS (可用程序配置)
上导通 下断开 ---> 上拉输入模式 (默认高电平的输入模式)
下导通 上断开 ---> 下拉输入模式 (默认低电平的输入模式)
都断开 --> 浮空输入模式
作用:给输入提供一个默认的输入电平(避免引脚悬空)
若接入上拉电阻 当引脚悬空时还有上拉电阻来保证引脚的高电平
(2)最上面的两路线路 时连接片上外设的端口
[1]模拟输入 连接到ADC上 它是接收模拟量 接施密特触发器(通过阈值调整波动电平)前
[2]复用功能输入 连接到其他需要读取端口的外设上 eg:串口的输入引脚 接收数字量 在施密特触发器后面
7.MOS管是一种电子开关 我们的信号来控制开关的导通和关闭 信号负责将IO接到VDD或者VSS 三种模式
(1) 推挽输出(强推输出模式) P-MOS N-MOS 均有效
数据寄存器为1时 上管导通 下管断开 输出到VDD 就是输出高电平
数据寄存器为0时 上管断开 下管导通 输出到VSS 就是输出低电平
此模式下 STM32对IO具有绝对的控制权 高低电平都由STM32说的算
(2)开漏模式下 P-MOS 无效
数据寄存器为1时 下管断开 输出相当于断开 也就是高阻模式
数据寄存器为0时 下管导通 输出到VSS 输出低电平 只有低电平驱动能力 (通信协议)
(3)关闭模式 均无效 输出关闭 端口的电平由外部信号来控制
编程步骤:
(1)使用RCC开启GPIO的时钟
(2)使用GPIO_Init函数初始化GPIO
(3)使用输出或者输入的函数控制GPIO口
[1]rcc.h文件 最常见的就3个 AHB AHB1 AHB2 然后看它的函数定义
[2]使能 或 失能 AHB外设时钟988
[3]gpio.h
GPIO_InitTypeDef 结构体参数 去本身的 enum里面去看
- GPIO_Mode:就是上面的8种模式
- GPIO_Pin : 都懂哈
- GPIO_Speed: 随便选
Led 是 低电平亮 高是 暗 !!!!!!
按键抖动
- 随便选择一个GPIO口,然后通过K1接到地,当按键按下时,PA0被直接下拉到GND,此时PA0口的电压就是低电平,当按键松手时,PA0被悬空,电压不确定,所以必须要求PA0是上拉输入的模式,否则就会出现引脚不确定的现象。(PA0是上拉模式,引脚悬空,PA0就是高电平)
- 增加了一个上拉电阻 引脚可以配置为 浮空输入或者上拉输入
- PA0必须要配置为下拉输入
- 增加了一个下拉电阻 引脚可以被配置为浮空输入 或者下拉输入