ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

[STM32HAL库]GPIO的8种工作模式及工程建立

[STM32HAL库]GPIO的8种工作模式及工程建立 目录GPIO概念GPIO的复用GPIO的八种工作模式4种输入模式GPIO_Mode_IN_FLOATING 浮空输入GPIO_Mode_IPU 上拉输入GPIO_Mode_IPD 下拉输入GPIO_Mode_AIN 模拟输入4种输出模式GPIO_Mode_Out_OD 通用开漏输出带上拉或者下拉GPIO_Mode_AF_OD 复用开漏输出带上拉或者下拉GPIO_Mode_Out_PP 通用推挽输出带上拉或者下拉GPIO_Mode_AF_PP 复用推挽输出带上拉或者下拉正式点灯配置CUBEMXKEIL5代码HAL_GPIO_WritePin 函数讲解本章结束!GPIO概念GPIOGeneral-purpose input/output,中文名叫通用型输入输出是STM32可控制的引脚最基本的功能就是控制输出高低电平以及检测输入电平高低是非常重要的一个外设。STM32芯片的GPIO引脚与外部设备连接起来可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。保护二极管IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。当引脚电压高于VDD时上方的二极管导通当引脚电压低于VSS时下方的二极管导通防止不正常电压引入芯片导致芯片烧毁。但是尽管如此还是不能直接外接大功率器件须加大功率及隔离电路驱动防止烧坏芯片或者外接器件无法正常工作。P-MOS管和N-MOS管由P-MOS管和N-MOS管组成的单元电路使得GPIO具有“推挽输出”和“开漏输出”的模式。这里的电路会在下面很详细地分析到。TTL肖特基触发器信号经过触发器后模拟信号转化为0和1的数字信号。但是当GPIO引脚作为ADC采集电压的输入通道时用其“模拟输入”功能此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。这里需要注意的是在查看《STM32中文参考手册V10》中的GPIO的表格时会看到有“FT”一列这代表着这个GPIO口时兼容3.3V和5V的如果没有标注“FT”就代表着不兼容5V。GPIO的复用STM32F4 有很多的内置外设这些外设的外部引脚都是与 GPIO 共用的。也就是说一个引脚可以有很多作用但是默认为IO口如果想使用一个 GPIO内置外设的功能引脚就需要GPIO的复用那么当这个 GPIO 作为内置外设使用的时候就叫做复用。GPIO的八种工作模式4种输入模式GPIO_Mode_IN_FLOATING 浮空输入GPIO作为输入功能的浮空输入时电信号使由外部流向内部的从结构图的右侧往左侧看信号流经顺序是①端口——②施密特触发器——③输入数据寄存器——④读取GPIO_Mode_IPU 上拉输入上拉输入和浮空输入的区别就是在第①和第②之间多了一个上拉电阻这样GPIO在没有连接外部部件时的默认电平是高电平其它流程和原来一样。GPIO_Mode_IPD 下拉输入下拉输入和浮空输入的区别就是在第①和第②之间多了一个下拉电阻这样GPIO在没有连接外部部件时的默认电平是低电平其它流程和原来一样。GPIO_Mode_AIN 模拟输入模拟输入模式和其它三种输入模式不同它的外部电平信号没有流入输入数据寄存器而是直接流入模拟输入部分。模拟输入一般是用来ADC读取和转换的。4种输出模式GPIO_Mode_Out_OD 通用开漏输出带上拉或者下拉开漏输出模式下通过设置位设置/清除寄存器或者输出数据寄存器的值途经N-MOS管最终输出到I/O端口。这里要注意N-MOS管当设置输出的值为高电平的时候N-MOS管处于关闭状态此时I/O端口的电平就不会由输出的高低电平决定而是由I/O端口外部的上拉或者下拉决定当设置输出的值为低电平的时候N-MOS管处于开启状态此时I/O端口的电平就是低电平。同时I/O端口的电平也可以通过输入电路进行读取注意I/O端口的电平不一定是输出的电平。GPIO_Mode_AF_OD 复用开漏输出带上拉或者下拉开漏复用输出模式与开漏输出模式很是类似。只是输出的高低电平的来源不是让CPU直接写输出数据寄存器取而代之利用片上外设模块的复用功能输出来决定的。GPIO_Mode_Out_PP 通用推挽输出带上拉或者下拉推挽输出模式下通过设置位设置/清除寄存器或者输出数据寄存器的值途经P-MOS 管和N-MOS管最终输出到I/O端口。这里要注意P-MOS管和N-MOS管当设置输出的值为高电平的时候P-MOS管处于开启状态N-MOS管处于关闭状态此时I/O端口的电平就由P-MOS管决定高电平当设置输出的值为低电平的时候P-MOS管处于关闭状态N-MOS管处于开启状态此时I/O端口的电平就由N-MOS管决定低电平。同时I/O端口的电平也可以通过输入电路进行读取注意此时I/O端口的电平一定是输出的电平。GPIO_Mode_AF_PP 复用推挽输出带上拉或者下拉推挽复用输出模式与推挽输出模式很是类似。只是输出的高低电平的来源不是让CPU直接写输出数据寄存器取而代之利用片上外设模块的复用功能输出来决定的。正式点灯配置CUBEMX1、先选择好芯片STM32F103RCT6点开SYS打开Debug模式选择Serial Wire。如不打开这个Debug模式下载一次程序后想再烧录程序将烧录不进需要更改BOOT引脚电平才能再次烧录。STM32三种BOOT启动模式详解(全网最全)https://blog.csdn.net/qq_39400113/article/details/1160514012、进入外部时钟源设置选择打开高速时钟源。3、进行时钟树配置由原理图可知外部高速时钟源为8MHz配置运行频率为72MHz4、点击PC13引脚配置为GPIO_Output。5、进入GPIO设置点击PC13可以看到它的默认设置。6、配置好文件名存储位置用的什么IDE。7、按图配置。点击右上角生成代码。CUBEMX配置完成。KEIL5代码1、进入MDK-ARM文件夹2、进入工程文件3、进入主程序只有在begin和end中间才可以写自己的代码不然cubemx在生成标准程序时会删掉不在这些区域内的代码。4、这两幅图可以看到主函数里面的基本结构。自己写的函数的初始化和一些参数的赋值应在硬件初始化后如GPIO初始化后HAL_GPIO_WritePin 函数讲解HAL 库中提供一个操作 GPIO 电平的函数HAL_GPIO_WritePin 函数void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)这里的高低电平可以理解为高低电压高电平为3.3V低电平为0V这两个是外在表现。那么由初中物理可以知道当led两端存在电压差且正向导通的话led便会发光。LED 即发光二极管单向导通当 LED 内有电流通过时会发光在安全电流范围内电流越大亮度越亮。根据封装方式不同最大电流也不同常用的0603封装最大电流为二十多毫安但是一般使LED工作在五毫安就够亮了。程序经过 HAL_Init 初始化 GPIO 初始化进入主循环在主循环中将 LED 引脚输出高电平从而点亮 LED 灯。主循环代码如下HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);写好代码进行编译后看代码没有编译错误开发板连接好stlink连接没问题就可以点击下载程序了,下载完程序后不要忘记摁开发板上的RESET键。代码实现后的现象就是PC13驱动的灯常亮。本章结束!还有不懂可以看视频讲解科创电控培训GPIO八种工作模式CubeMX配置代码讲解点灯实验_哔哩哔哩_bilibili
返回列表