网站推广排名收费标准,wordpress类,亚马逊seo关键词优化软件,久久建筑网下载教程1.什么是GPIO
General Purpose Input Output#xff0c;即通用输入输出端口#xff0c;简称GPIO#xff0c;作用是负责采集外部器件的信息或者控制外部器件工作#xff0c;即输入输出。
2.STM32 GPIO简介
2.1.GPIO特点
不同型号#xff0c;IO口数量可能不一样#x…1.什么是GPIO
General Purpose Input Output即通用输入输出端口简称GPIO作用是负责采集外部器件的信息或者控制外部器件工作即输入输出。
2.STM32 GPIO简介
2.1.GPIO特点
不同型号IO口数量可能不一样可通过选型手册快速查询快速翻转每次翻转最快只需要两个时钟周期F1最高速度可以到50Mhz每个IO口都可以做中断支持8种工作模式
2.2.GPIO电气特性 STM32工作电压范围——2 V ≤ VDD ≤ 3.6 V GPIO识别电压范围——COMS端口-0.3V ≤ VIL ≤ 1.164V1.833V ≤ VIH ≤ 3.6V部分兼容TTL GPIO输出电流——单个IO最大25mA
详情参考STM32的数据手册
2.3.GPIO引脚分布
STM32引脚类型电源引脚、晶振引脚、复位引脚、下载引脚、BOOT引脚、GPIO引脚 IO引脚分布特点按组存在、组数视芯片而定、每组最多16个IO引脚
3.IO端口基本结构介绍 F1系列IO端口基本结构 ① 保护二极管 ② 内部上拉、下拉电阻 ③ 施密特触发器 ④ P-MOS N-MOS管 F4/F7/H7系列IO端口基本结构 施密特触发器施密特触发器就是一种整形电路可以将非标准方波整形成方波 P-MOS N-MOS管MOS管是压控型元件通过控制栅源电压 Vgs 来实现导通或关闭
4.GPIO的八种模式分析
模式特点及应用浮空输入输入用完全浮空状态不定上拉输入输入用用内部上拉默认是高电平下拉输入输入用用内部下拉默认是低电平模拟功能ADC、DAC开漏输出软件IIC的SDA、SCL等推挽输出驱动能力强25mAmax通用输出开漏复用片上外设功能硬件IIC 的SDA、SCL引脚等推挽复用片上外设功能SPI 的SCK、MISO、MOSI引脚等
4.1.浮空输入 4.2.上拉输入 4.3.下拉输入 4.4.模拟功能 4.5.开漏输出 4.6.推挽输出 4.7.开漏复用 4.8.推挽复用 4.9.F4/F7/H7系列和F1系列的GPIO差异点
F1在输出模式禁止使用内部上下拉F4/F7/H7在输出模式可以使用内部上下拉不同系列IO翻转速度可能不同
【STM32能输出5V的电平吗——可以兼容5V的引脚可以】
5.GPIO寄存器介绍
在F1系列和F4/F7/F7系列的GPIO中选择GPIO模式的寄存器不同控制输入输出的寄存器相同
5.1.F1/F4/F7/H7相同GPIO寄存器
端口输入数据寄存器IDR——用于判断IO引脚的电平 端口输出数据寄存器ODR——用于设置IO引脚输出的电平 端口位设置/清除寄存器BSRR——用于设置ODR寄存器
5.2.F1系列特有GPIO寄存器
端口配置低/高寄存器CRL/CRH——设置工作模式、输出速度
5.3.F4/F7/H7系列特有GPIO寄存器
GPIO 端口模式寄存器MODER——用于设置模式 GPIO 端口输出类型寄存器OTYPER——用于设置输出类型 GPIO 端口输出速度寄存器OSPEEDR——用于设置IO的输出速度 GPIO 端口上拉/下拉寄存器PUPDR用于设置上拉/下拉电阻
5.4.F1系列与F4/F7/H7系列工作模式配置
F1系列 输入上拉/下拉电阻通过ODR寄存器来设置 F4/F7/H7系列
5.5.ODR和BSRR寄存器控制输出的区别
ST官方给的答案使用ODR在读和修改访问之间产生中断时可能会发生风险BSRR无风险。建议使用BSRR控制输出
ODR修改读-改-写
GPIOB-ODR | 1 3; /* PB3 1 */
BSRR修改写
GPIOB-BSRR 0x00000008; /* PB3 1 */6.通用外设驱动模型四步法 7.GPIO配置步骤 使能时钟 __HAL_RCC_GPIOx_CLK_ENABLE() 设置工作模式 HAL_GPIO_Init() 设置输出状态可选 HAL_GPIO_WritePin() 、HAL_GPIO_TogglePin() 读取输入状态可选 HAL_GPIO_ReadPin() 关键结构体
// F1
typedef struct
{ uint32_t Pin; /* 引脚号 */ uint32_t Mode; /* 模式设置 */ uint32_t Pull; /* 上拉下拉设置 */ uint32_t Speed; /* 速度设置 */
} GPIO_InitTypeDef;
// F4/F7/H7
typedef struct
{ uint32_t Pin; /* 引脚号 */ uint32_t Mode; /* 模式设置 */ uint32_t Pull; /* 上拉下拉设置 */ uint32_t Speed; /* 速度设置 */uint32_t Alternate; /* 复用功能 */
} GPIO_InitTypeDef;8.编程实战点亮一个LED灯/跑马灯
分析IO输出模式——推挽输出
9.编程实战通过一个按键控制一个LED灯亮灭 【编程实战代码暂不贴出】