1、点亮LED灯
学习目标
1.学习STM32主板的引脚基本使用。
2.了解如何控制板载的LED灯。
LED灯介绍
STM32的LED控制是一种基本而重要的功能,涉及到GPIO(通用输入输出端口)的配置和使用。控制LED灯通常作为微控制器编程的基础实践,不仅帮助理解GPIO的工作方式,还能通过实际的应用巩固对STM32系列单片机架构的了解。
在STM32中,LED的控制通常是通过配置特定的GPIO引脚来实现的。这涉及到设置GPIO为输出模式,并控制其输出高或低电平来使LED灯亮或灭。例如,一个典型的实现是通过stm32f10x_gpio.h头文件中的GPIO_Init函数来完成GPIO口的初始化,在此过程中,会使用到GPIOx_CRL、GPIOx_CRH等寄存器来设定引脚的输入输出模式及工作速度。此外,控制LED的亮与灭,则是通过操作GPIOx_ODR寄存器来实现的,该寄存器用于控制GPIOx的输出高电平或者低电平。
从更细节的角度来看,为了控制LED灯,开发者需要了解STM32 GPIO的多种工作模式。例如,GPIO可以被配置为开漏输出或推挽输出模式。在大多数情况下,为了控制LED的开关状态,通常会使用推挽输出模式,这种模式下,当输出高电平时,LED亮;输出低电平时,LED灭。如果需要通过一个GPIO引脚控制多个LED或与其他设备共享信号线,可能会用到开漏输出模式,这时需要在外部连接一个上拉电阻。
综上所述,通过控制STM32的GPIO引脚来控制LED灯的实践,不仅可以让开发者掌握基本的GPIO操作,还能进一步学习如何利用定时器产生PWM信号来控制复杂设备。这是对STM32硬件及其软件框架深入理解的良好起点。
硬件搭建
本次课程无需额外的硬件设备直接利用STM32主板上的板载LED灯即可。
程序分析
注意:本章对 STM32 的 GPIO 外设操作,需在工程中添加 stm32f10x_gpio.c 和 stm32f10x_rcc.c 文件,对 GPIO 操作的函数都 在stm32f10x_gpio.c 中,stm32f10x_gpio.h 是函数的申明及一些选项配置的宏定义。在工程模板中这个已经添加,在后面的实验中我们就不再强调工程模板已调用的那几个文件。还需在 KEIL5 中把新建的 APP下的 led文件的路径包括进来。
我们需要完成 LED 的驱动,所以在工程模板上新建一个 led.c 和 led.h 文件, 将其存放在 led 文件夹内。这两个文件内容是我们自己需要编写的,不是库文件。 通常 xxx.c 文件用于存放编写的驱动程序,xxx.h 文件用于存放 xxx.c 内的 stm32 头文件、管脚定义、全局变量声明、函数声明等内容,后续代码将不再声明。
由原理图可以看出,在STM32主板上有 1个 LED 连接 STM32F103 芯片管脚PC13。如果要使 LED灯亮,只需要控制 PC13管脚输出低电平,如果要使LED灯灭, 只需控制 PC13输出高电平。
led.c文件代码:
led.h文件代码:
主函数main.c文件代码如下:
实验现象
程序下载完成之后,我们可以看到STM32主板PC13引脚上的LED灯被点亮。