封装端口输出高低电平控制LED显示:
以下方式便于修改。
LED.h
#ifndef __LED_H#define __LED_H#include "stm32f10x.h"#define GPIO_PIN_LED1 GPIO_Pin_3 //PC.3#define GPIO_PIN_LED2 GPIO_pin_4 //PC.4#define GPIO_PIN_LED3 GPIO_pin_5 //PB.5#define GPIO_LED GPIOC#define GPIO_PIN_LED_ALL GPIO_PIN_LED1\ |GPIO_PIN_LED2|GPIO_PIN_LED3#define RCC_LED RCC_APB2Periph_GPIOC //时钟配置 #define ON 0 #define OFF 1#define LED1(a) if (a) \ GPIO_SetBits(GPIO_LED1,GPIO_PIN_LED1);\ else \ GPIO_ResetBits(GPIO_LED1,GPIO_PIN_LED1)#define LED2(a) if (a) \ GPIO_SetBits(GPIO_LED2,GPIO_PIN_LED2);\ else \ GPIO_ResetBits(GPIO_LED2,GPIO_PIN_LED2)#define LED3(a) if (a) \ GPIO_SetBits(GPIO_LED3,GPIO_PIN_LED3);\ else \ GPIO_ResetBits(GPIO_LED3,GPIO_PIN_LED3)void LED_GPIO_Config(void);#endif /* __LED_H */LED.C
#include "led.h"/* * 函数名:LED_GPIO_Config * 描述 :配置LED用到的I/O口 * 输入 :无 * 输出 :无 */void LED_GPIO_Config(void){ GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_LED, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_PIN_LED_ALL; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIO_LED, &GPIO_InitStructure);}