由原理图可知,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口输出速度为50MHzGPIO_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)}