用stm32固件库点亮LED—红、蓝、绿灯

用stm32固件库点亮LED—红、蓝、绿灯

一、前言:
本人用的是stm32f1系列,火哥的指南针开发板,在这强力推荐火哥stm32的教学视频和开发板(不喜勿喷),对于初学者来说很容易上手,教学视频简直是保姆级别…赞赞赞!
二、正文:
这是LED的硬件电路,绿灯为PB0,红灯为PB5,蓝灯为PB1。这些LED灯的阴极都是连接到STM32的GPIO引脚,只要我们控制GPIO引脚的电平输出状态,即可控制LED灯的亮灭。
用stm32固件库点亮LED—红、蓝、绿灯_第1张图片
—————————————————————————————————
1.主函数 main.c

#include "stm32f10x.h"   // 相当于51单片机中的  #include 
#include "bsp_led.h"   //调用自己写的功能函数的头文件即可。

int main(void)
{
 //LED_GPIO_Config_R(); //点亮红灯
 LED_GPIO_Config_G(); //点亮绿灯
 //LED_GPIO_Config_B(); //点亮蓝灯
}

————————————————————————————————
2.建立的功能函数的头文件 bsp_led.h

#ifndef  __BSP_LED_H  /*第一行、第二行和最后一行是用来避免功能函数的多次调 用*/
#define __BSP_LED_H
#include "stm32f10x.h"

//绿灯
#define LED_G_GPIO_PIN_R       GPIO_Pin_0 /*第六行*/
#define LED_G_GPIO_PORT        GPIOB /*第七行*/
#define LED_G_GPIO_CLK         RCC_APB2Periph_GPIOB /*第八行*/
void LED_GPIO_Config_G(void); /*这是点灯函数,便于主函数调用点灯函数*/

#endif  /*__BSP_LED_H*/

第六行:宏定义GPIO的引脚,GPIO_Pin_0 为配置输出PB0,将0改为1为输出PB1,将0改为5为输出PB5,就是分别呈现绿、蓝、红三种颜色。

第七行:宏定义GPIO的端口。

第八行:宏定义GPIOB的时钟。
这三行宏定义是为了在功能函数中GPIO初始化时方便调用
————————————————————————————————
3.建立功能函数 bsp_led.c

#include "bsp_led.h"  //导入头文件

/*接下来进行GPIO的初始化*/
void LED_GPIO_Config_G(void)
{
 GPIO_InitTypeDef GPIO_InitStruct;  //将初始化结构体定义一个名称便于调用
 
 RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE); //调用APB2时钟函数,打开时钟
 GPIO_InitStruct.GPIO_Pin = LED_G_GPIO_PIN_G; //此处为进行初始化赋值
 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; //此处为进行初始化赋值
 

①通过这三个步骤便可以进行点亮LED-绿灯,将Pin_x的x值修改便可以点亮红灯和蓝灯。
②当在主函数将三种点亮灯的函数写入时,便可点亮由三种颜色混合的颜色,前提是在bsp_led.h“文件中分别重复对Pin、Mode、Speed的宏定义和写入点灯函数,并且在”bsp_led.c“文件中分别重复写入三种GPIO功能初始化的函数即可。
————————————————————————————————
文章打的有点赶,如果有什么错位的地方还望见谅且帮我斧正,谢谢观看!

你可能感兴趣的:(嵌入式,stm32)