点亮STM32最小系统板LED灯

打印 上一主题 下一主题

主题 1016|帖子 1016|积分 3052

 对于如何点亮板载LED灯只需要掌握如何初始化GPIO引脚,并改变GPIO引脚的电平即可实现点亮大概熄灭LED。
  1. Led_INFO led_info = {0};
复制代码
 led_info 是一个结构体变量,类型为 Led_INFO,用于存储LED的状态信息。这里初始化为 {0},表示所有成员变量初始值为0。
  1. void Led_Init(void)
  2. {
  3.         GPIO_InitTypeDef gpio_initstruct;
  4.        
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);                //打开GPIOB的时钟
  6.        
  7.         gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;                                //设置为输出
  8.         gpio_initstruct.GPIO_Pin = GPIO_Pin_13;                                                //将初始化的Pin脚
  9.         gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;                                //可承载的最大频率
  10.        
  11.         GPIO_Init(GPIOC, &gpio_initstruct);                                                        //初始化GPIO
  12.        
  13.         Led_Set(LED_OFF);                                                                                        //初始化完成后,关闭蜂鸣器
  14. }
复制代码
函数功能:初始化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初始状态设置为关闭。
  1. void Led_Set(_Bool status)
  2. {
  3.        
  4.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET);                //如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
  5.        
  6.         led_info.Led_Status = status;
  7. }
复制代码
 函数功能:根据传入的参数控制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的状态。
  1. #include "stm32f10x.h"//硬件驱动#include "led.h"Led_INFO led_info = {0};/**************************************************************        函数名称:        Led_Init**        函数功能:        蜂鸣器初始化**        入口参数:        无**        返回参数:        无**        阐明:                *************************************************************/void Led_Init(void)
  2. {
  3.         GPIO_InitTypeDef gpio_initstruct;
  4.        
  5.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);                //打开GPIOB的时钟
  6.        
  7.         gpio_initstruct.GPIO_Mode = GPIO_Mode_Out_PP;                                //设置为输出
  8.         gpio_initstruct.GPIO_Pin = GPIO_Pin_13;                                                //将初始化的Pin脚
  9.         gpio_initstruct.GPIO_Speed = GPIO_Speed_50MHz;                                //可承载的最大频率
  10.        
  11.         GPIO_Init(GPIOC, &gpio_initstruct);                                                        //初始化GPIO
  12.        
  13.         Led_Set(LED_OFF);                                                                                        //初始化完成后,关闭蜂鸣器
  14. }
  15. /**************************************************************        函数名称:        Led_Set**        函数功能:        蜂鸣器控制**        入口参数:        status:开关蜂鸣器**        返回参数:        无**        阐明:                开-Led_ON                关-Led_OFF*************************************************************/void Led_Set(_Bool status)
  16. {
  17.        
  18.         GPIO_WriteBit(GPIOC, GPIO_Pin_13, status == LED_ON ? Bit_RESET : Bit_SET);                //如果status等于Led_ON,则返回Bit_SET,否则返回Bit_RESET
  19.        
  20.         led_info.Led_Status = status;
  21. }
复制代码
  1. #ifndef _LED_H_
  2. #define _LED_H_
  3. typedef struct
  4. {
  5.         _Bool Led_Status;
  6. } Led_INFO;
  7. #define LED_ON                1
  8. #define LED_OFF        0
  9. extern Led_INFO led_info;
  10. void Led_Init(void);
  11. void Led_Set(_Bool status);
  12. #endif
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

王國慶

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表