对于如何点亮板载LED灯只需要掌握如何初始化GPIO引脚,并改变GPIO引脚的电平即可实现点亮大概熄灭LED。
led_info 是一个结构体变量,类型为 Led_INFO,用于存储LED的状态信息。这里初始化为 {0},表示所有成员变量初始值为0。
- void Led_Init(void)
- {
- GPIO_InitTypeDef gpio_initstruct;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //打开GPIOB的时钟
-
- gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP; //设置为输出
- gpio_initstruct.GPIO_Pin = GPIO_Pin_13; //将初始化的Pin脚
- gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz; //可承载的最大频率
-
- GPIO_Init(GPIOC, &gpio_initstruct); //初始化GPIO
-
- Led_Set(LED_OFF); //初始化完成后,关闭蜂鸣器
- }
复制代码 函数功能:初始化LED的GPIO引脚。
具体步调:
1定义一个 GPIO_InitTypeDef 结构体变量 gpio_initstruct,用于配置GPIO引脚的模式、引脚号、 速率等。
2使用 RCC_APB2PeriphClockCmd 函数使能GPIOC的时钟,因为LED连接在GPIOC的第13号引 脚上。
3配置 gpio_initstruct 结构体:
GPIO_Mode 设置为 GPIO_Mode_Out_PP,表示将引脚配置为推挽输出模式。
GPIO_Pin 设置为 GPIO_Pin_13,表示初始化GPIOC的第13号引脚。
GPIO_Speed 设置为 GPIO_Speed_50MHz,表示引脚的最大输出速率为50MHz。
4调用 GPIO_Init 函数,根据 gpio_initstruct 的配置初始化GPIOC的第13号引脚。
5调用 Led_Set(LED_OFF),将LED初始状态设置为关闭。
- void Led_Set(_Bool status)
- {
-
- GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET); //如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
-
- led_info.Led_Status = status;
- }
复制代码 函数功能:根据传入的参数控制LED的开关状态。
参数:status:一个布尔值,表示LED的状态。LED_ON 表示打开LED,LED_OFF 表示关闭LED。
具体步调:
1使用 GPIO_WriteBit 函数设置GPIOC的第13号引脚的状态:
2如果 status 等于 LED_ON,则将引脚设置为 Bit_RESET(低电平),打开LED。
3如果 status 不等于 LED_ON,则将引脚设置为 Bit_SET(高电平),关闭LED。
4更新 led_info.Led_Status 为当前的 status,以便记录LED的状态。
- #include "stm32f10x.h"//硬件驱动#include "led.h"Led_INFO led_info = {0};/************************************************************** 函数名称: Led_Init** 函数功能: 蜂鸣器初始化** 入口参数: 无** 返回参数: 无** 阐明: *************************************************************/void Led_Init(void)
- {
- GPIO_InitTypeDef gpio_initstruct;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //打开GPIOB的时钟
-
- gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP; //设置为输出
- gpio_initstruct.GPIO_Pin = GPIO_Pin_13; //将初始化的Pin脚
- gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz; //可承载的最大频率
-
- GPIO_Init(GPIOC, &gpio_initstruct); //初始化GPIO
-
- Led_Set(LED_OFF); //初始化完成后,关闭蜂鸣器
- }
- /************************************************************** 函数名称: Led_Set** 函数功能: 蜂鸣器控制** 入口参数: status:开关蜂鸣器** 返回参数: 无** 阐明: 开-Led_ON 关-Led_OFF*************************************************************/void Led_Set(_Bool status)
- {
-
- GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET); //如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
-
- led_info.Led_Status = status;
- }
复制代码- #ifndef _LED_H_
- #define _LED_H_
- typedef struct
- {
- _Bool Led_Status;
- } Led_INFO;
- #define LED_ON 1
- #define LED_OFF 0
- extern Led_INFO led_info;
- void Led_Init(void);
- void Led_Set(_Bool status);
- #endif
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |