固件库点灯

该文介绍了如何使用STM32F10X微控制器通过GPIO的推挽输出模式控制LED。在bsp_led.c和bsp_led.h文件中,定义了初始化GPIO端口和LED状态切换的函数及宏。在main函数中,首先配置GPIOB的PB0为低电平有效,然后通过宏LED(ON)控制LED亮起。文章展示了C语言编程在嵌入式系统中的应用。
摘要由CSDN通过智能技术生成
  

 

由原理图可知,LED分别接在PB0,PB1,PB5上,且输出低电平有效
由图可知,GPIO由八种工作模式,为点亮led,采用推挽输出模式
所以代码编译如下:
1)bsp_led.c中,对GPIOB.0进行初始化(根据原理图配置GPIO口)
void LED_GPIO_Config(void)
{        
        /*定义一个GPIO_InitTypeDef类型的结构体*/
        GPIO_InitTypeDef  GPIO_InitStructure;
     
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     //使能PB端口时钟
    
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;                 //PB0 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;          //输出模式:推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;         //IO口输出速度为50MHz
        GPIO_Init(GPIOB, &GPIO_InitStructure);                     //根据设定参数初始化GPIOB.5
        //对PB0初始化完成
        GPIO_SetBits(GPIOB,GPIO_Pin_0);                         //令PB0输出高电平  //led灭
       //GPIO_ResetBits(GPIOB,GPIO_Pin_0);                      //令PB0输出低电平
}
bsp_led.h函数
#ifndef __LED_H
#define __LED_H   //为防止重复编译,需在.h文件中加入以下代码
void LED_GPIO_Config(void);
#endif
main函数
#include "stm32f10x.h"
#include "bsp_led.h"
void main(void)
{
    LED_GPIO_Config();  //led初始化
    GPIO_ResetBits(GPIOB,GPIO_Pin_0);  //令PB0输出低电平,LED亮
}
至此,LED点亮
2)实现带参宏led亮灭
bsp_led.h函数
#ifndef __LED_H
#define __LED_H   //为防止重复编译,需在.h文件中加入以下代码
#define ON 1
#define OFF 0
#define LED(a) 
            if(a==1) {
                        GPIO_ResetBits(GPIOB,GPIO_Pin_0);  //令PB0输出低电平,LED亮
                        }
            else {      
                         GPIO_SetBits(GPIOB,GPIO_Pin_0);                         //令PB0输出高电平  //led灭
                        }
void LED_GPIO_Config(void);
#endif
main函数
#include "stm32f10x.h"
#include "bsp_led.h"
void main(void)
{
    LED_GPIO_Config();  //led初始化
    LED(ON);  //令PB0输出低电平,LED亮
    //LED(OFF)
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值