点亮一个LED灯是我们人生中必不可少的,不管是51或STM32,还是其他更底层领域,闲话就不多说啦,进入正题。
控制LED需要使用到GPIO输入和输出IO口,GPIO是STM32控制管脚,GPIO的管脚与外部设备连接,能够实现与外部进行通信,控制,采集数据等。
GPIO框图
1.1硬件设置
LED的阴极连接到了STM32的GPIO管脚,只要我们控制GPIO电平的输出状态,赋予高或低电平,就能够控制LED的亮灭状态。如果你的开发板的LED灯连接方式不一样,修改工程相关管脚即可。
要想点亮LED需要了解GPIO模式配置,如下。
1、led.h头文件相关宏定义代码
#include "stm32f10x.h"
/* ---------------------------------------------
文件名称:led.h
描述:硬件相关模块封装 宏定义 方便移植
-----------------------------------------------------*/
#define GPIO_LED_PROT GPIOC
#define GPIO_LED_CLK RCC_APB2Periph_GPIOC
#define GPIO_LED_PIN GPIO_Pin_13
void GPIO_Cofing(void);
2、led.c 文件的代码
RCC_APB2PeriphClockCmd(GPIO_LED_CLK,ENABLE);
配置IO时必须要使能时钟,时钟犹如人的心脏。
#include "bsp-led.h"
void GPIO_Cofing(void)
{
GPIO_InitTypeDef GPIO_InitStruct; //声明一个结构体
RCC_APB2PeriphClockCmd(GPIO_LED_CLK,ENABLE); //使能GPIOC时钟
GPIO_InitStruct.GPIO_Pin = GPIO_LED_PIN; //控制PC13管脚
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //设置管脚为通用推挽输出模式
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //设置管脚速率为50MHZ
GPIO_Init(GPIO_LED_PROT,&GPIO_InitStruct); //初始化结构体
}
主函数.main.c
#include "stm32f10x.h"
#include "bsp-led.h"
int main(void)
{
GPIO_Cofing();
while(1)
{
//寄存器GPIOx_BRR 相关寄存器配置请查看手册
//作用:置1 清除对应ODR为0
GPIO_ResetBits(GPIO_LED_PROT, GPIO_LED_PIN);
}
}
烧录程序之后就可以点亮LED啦! 完