封装端口输出高低电平控制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);
}