stm32笔记:GPIO的的配置和操作(1)推挽输出方式

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




你可能感兴趣的:(stm32,GPIO,推挽输出)