学习总结:(学习总结)STM32CubeMX HAL库 学习笔记撰写心得https://blog.csdn.net/Wang2869902214/article/details/142435481
STM32F103C8T6的GPIO引脚输出配置
时钟配置
(学习记录)使用 STM32CubeMX——配置时钟(入门)https://blog.csdn.net/Wang2869902214/article/details/142423522
GPIO引脚选择
①:在 “输出与配置”页面下
②:大部分STM32F103C8T6最小系统板上自带一个板载PC13引脚的LED灯
这里引脚选择可以按照自己的情况去选择对应的引脚,我这里就选择了PC13引脚
然后点击PC13引脚后,可以发现他会弹出很多个选项,而这些选项就是该引脚(PC13)能够复用的所有引脚功能:
- PC13-TAMPER-RTC:
- 这是指PC13引脚可以被配置为与实时时钟(RTC)的篡改检测(TAMPER)功能相关联。TAMPER引脚通常用于检测外部对系统的物理篡改,当检测到篡改时,可以触发特定的安全响应。
- Reset_State:
- 这个选项表示初始状态(未使用)
- RTC_OUT:
- 这表示PC13引脚可以配置为输出RTC的某些信号,如秒脉冲、闹钟信号等。具体功能取决于RTC的配置。
- RTC_TAMPER:
- 与“PC13-TAMPER-RTC”类似,这是指该引脚可以作为RTC的篡改检测输入。
- GPIO_Input:
- 将PC13配置为通用输入引脚,用于读取外部信号的状态。
- GPIO_Output:
- 将PC13配置为通用输出引脚,用于控制外部设备或信号。
- GPIO_Analog:
- 将PC13配置为模拟输入模式,通常用于连接模拟信号源,如传感器的输出,到ADC(模数转换器)。
- EVENTUT:
- 这个选项可能是指该引脚可以配置为事件输出(EVENT OUT),用于生成特定的事件信号,这些信号可以触发其他硬件模块或中断。
- GPIO_EXTI13:
- 这表示PC13引脚可以配置为外部中断源(EXTI,External Interrupt)。当该引脚上的信号发生变化(如上升沿、下降沿或双边沿触发)时,可以触发中断,从而执行特定的中断服务程序。
选择GPIO_Output模式
①:这里我们选择GPIO_Output模式
②:这里打开GPIO选项
③:点击对应的PC13 PIN
④:下方有个 User Lable :这里相当于用户标签(重命名),生成代码后会帮你宏定义此引脚名字
使用用户标签的好处:如果设置了用户标签,然后在后续如果需要变换此LED引脚,只需要将变更后的引脚的用户标签改为之前的用户标签,即可不需要修改代码,重新生成代码后即可使用,因为这里的原理就是宏定义修改,所以不用代码中修改具体的引脚是哪个。于是这里我设置为:LED
详细GPIO Pin配置
- GPIO output level (输出电平):
- LOW: 设置引脚初始输出电平为低电平(0V)。
- High: 设置引脚初始输出电平为高电平(通常接近供电电压,如3.3V或5V)。
- GPIO mode (GPIO模式):
- Output Push-Pull (推挽输出): 这是最常见的输出模式,适用于大多数数字信号输出。在此模式下,引脚可以主动输出高电平或低电平。
- Output Open Drain (开漏输出): 在此模式下,引脚只能主动输出低电平。当引脚被设置为高电平时,它实际上是被置为高阻态(Z态),允许外部电路(如上拉电阻)将引脚拉高到高电平。开漏输出通常用于需要多个输出共享同一总线的场景,如I2C总线。
- GPIO Pull-up/Pull-down (上拉/下拉):
- No Pull-up and Pull-down (无上拉/下拉): 引脚在未被驱动时保持浮空状态,易受外部干扰。
- Pull-up (上拉): 在引脚内部连接一个上拉电阻,使引脚在未被驱动时默认保持高电平。
- Pull-down (下拉): 在引脚内部连接一个下拉电阻,使引脚在未被驱动时默认保持低电平。
- Maximum output speed (最大输出速度):
- LOW: 设置引脚输出信号的最大速度为低速。
- Medium: 设置引脚输出信号的最大速度为中速。
- High: 设置引脚输出信号的最大速度为高速。
- 输出速度的选择通常取决于所连接外设的要求以及系统时钟的配置。
- User Label (用户标签):
- 这是一个可选的字段,允许您为引脚分配一个自定义的名称或标签,以便在代码中更容易地识别和使用它。
这些配置选项使您能够灵活地配置GPIO引脚以满足特定的应用需求。例如:
- 如果您需要控制一个LED,您可能会选择“Output Push-Pull”模式,并根据LED的极性设置初始输出电平为“High”或“Low”。
- 如果您需要与其他设备通信并使用开漏输出模式(如I2C),则应选择“Output Open Drain”模式。
- 如果您希望引脚在未被驱动时保持稳定的电平,则应使用上拉或下拉电阻。
- 如果您需要快速切换引脚状态以匹配高速外设的要求,则应选择较高的输出速度。
LED推荐配置:
- GPIO output level: 根据您的LED连接方式和期望的初始状态,选择“High”或“Low”。如果LED正极接GPIO引脚,负极接地,则通常选择“Low”以点亮LED。
- GPIO mode: 选择“Output Push Pull”以启用推挽输出模式。
- GPIO Pull-up/Pull-down: 对于推挽输出模式,通常选择“No Pull-up and Pull-down”,因为上拉/下拉电阻在此模式下不适用。
- Maximum output speed: 根据需要选择“LOW”、“Medium”或“High”。对于大多数LED控制应用,“LOW”或“Medium”速度通常足够。
代码生成
点击右上角的代码生成后,打开Keil5工程的main.h中可以看见:
这里有我们刚刚在STM32CubeMX中配置的用户标签,他会再以一种特定的格式帮我组装一下
控制LED代码
在main.c的主函数while循环中:
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
HAL_Delay(500);
}
/* USER CODE END 3 */
HAL库对比标准库来说,很多函数都是HAL开头的,函数的命名也是非常容易理解的
这里通过代码让用户标签为LED的引脚(PC13)周期500ms翻转电平(LED闪烁)
在选择引脚的参数时,有一个初始化电平状态,此选项会在代码运行初始化GPIO引脚时改变GPIO状态,所以需要更具硬件设置来选择对应的初始化电平状态:例如LED灯是低电平点亮,那么如果初始化为低电平,单片机一上电后LED灯就会点亮
编译下载
每次编译下载后代码都不会自动运行,需要复位才会运行代码,我们进行如下操作即可下载后自动运行
①:选择上方的 魔术棒
②:选择Debug
③:点击Settings
①:选择Flash Download
②:勾选 Reset and Run
如果有此选项:“Pack”就继续操作,如果没有的话就不用继续修改了,也可以自动运行
①:选择Pack
②:取消勾选Enable
编译后下载到STM32F103C8T6的开发板中,就能发现对应的引脚上的LED灯正在每500ms进行闪烁
效果演示
STM32CubeMX GPIO输入LED测试视频
章节结尾:
至此,本章节GPIO输出配置部分结束,再下一章学习笔记中,将会记录GPIO引脚输入配置