STM32固件库实现点亮LED

本文详细介绍了如何使用STM32固件库来点亮LED,包括LED灯引脚宏定义、控制宏定义、GPIO初始化函数以及主函数的编写。通过实例代码展示如何使能GPIO端口时钟、初始化LED引脚为推挽输出模式,并通过宏定义实现LED的亮灭控制。此外,还分享了防止头文件重复包含的技巧和注释规范。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

使用固件库点亮LED


提示:以下是本篇文章正文内容

一、原理图

在这里插入图片描述

二、软件设计

在工程之上新建“bsp_led.c”及“bsp_led.h”文件,这些文件不属于STM32 标准库的内容,是由我们自己根据应用需要编写的,编程步骤如下:

  1. 使能 GPIO 端口时钟;
  2. 初始化 GPIO 目标引脚为推挽输出模式;
  3. 编写简单测试程序,控制 GPIO 引脚输出高、低电平

三、代码

1.LED 灯引脚宏定义

在编写应用程序的过程中,要考虑更改硬件环境的情况,即提高可移植性。
这个时候一般把硬件相关的部分使用宏来封装,若更改了硬件环境,只修改这些硬件相关的宏即可,这
些定义一般存储在头文件,即本例子中的“bsp_led.h”文件中
代码如下:

 // R-红色
 #define LED1_GPIO_PORT GPIOB
 #define LED1_GPIO_CLK RCC_APB2Periph_GPIOB
 #define LED1_GPIO_PIN GPIO_Pin_5
 // G-绿色
 #define LED2_GPIO_PORT GPIOB
 #define LED2_GPIO_CLK RCC_APB2Periph_GPIOB
 #define LED2_GPIO_PIN GPIO_Pin_0
 // B-蓝色
 #define LED3_GPIO_PORT GPIOB
 #define LED3_GPIO_CLK RCC_APB2Periph_GPIOB
 #define LED3_GPIO_PIN GPIO_Pin_1

以上代码分别把控制 LED 灯的 GPIO 端口、GPIO 引脚号以及 GPIO 端口时钟封装起来了。在实际控制的时候我们就直接用这些宏,以达到应用代码硬件无关的效果。

2. 控制 LED 灯亮灭状态的宏定义

为了方便控制 LED 灯,我们把 LED 灯常用的亮、灭及状态反转的控制也直接定义成宏。

 /* 直接操作寄存器的方法控制 IO */
 #define digitalHi(p,i) {p->BSRR=i;} //输出为高电平
 #define digitalLo(p,i) {p->BRR=i;} //输出低电平
 #define digitalToggle(p,i) {p->ODR ^=i;} //输出反转状态

 #define LED2_TOGGLE digitalToggle(LED2_GPIO_PORT,LED2_GPIO_PIN)
 #define LED2_OFF digitalHi(LED2_GPIO_PORT,LED2_GPIO_PIN)
 #define LED2_ON digitalLo(LED2_GPIO_PORT,LED2_GPIO_PIN)

 #define LED3_TOGGLE digitalToggle(LED2_GPIO_PORT,LED3_GPIO_PIN)7 
 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值