目录
配置LED灯引脚
引脚图
配置引脚号
配置引脚速度
配置引脚的模式
引脚初始化
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);//初始化引脚
GPIO_InitTypeDef GPIO;
//PB5
GPIO.GPIO_Pin=GPIO_Pin_5;
GPIO.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出
GPIO.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
//PB0
GPIO.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
//PB1
GPIO.GPIO_Pin=GPIO_Pin_1;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
配置引脚输出电平
/*
输出高电平
*/
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
/*
输出低电平
*/
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
/*
直接控制输出高低电平
*/
void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
GPIO_WriteBit(GPIOD,GPIO_Pin_10,0);//PD10输出低电平
GPIO_WriteBit(GPIOD,GPIO_Pin_10,1);//PD10输出高电平
使能时钟
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
例程
例程说明
实现LED灯交替闪烁。
main.h
#ifndef _MAIN_H_
#define _MAIN_H_
#include "stm32f10x.h" // Device header
#include "stm32f10x_gpio.h" // Keil::Device:StdPeriph Drivers:GPIO
#include "stm32f10x_tim.h" // Keil::Device:StdPeriph Drivers:TIM
#include <stm32f10x_rcc.h>
#include <stm32f10x_usart.h>
#include <stm32f10x_sdio.h>
#include <misc.h>
#include <stdio.h>
#include "usart.h"
#include <delay.h>
#include "timch.h"
#include "led.h"
#endif
main.c
#include "main.h"
int main(){
delay_init();
LED_Init();
while(1){
LED_R_NO();
delay_ms(500);
LED_ALL_OFF();
delay_ms(500);
LED_G_NO();
delay_ms(500);
LED_ALL_OFF();
delay_ms(500);
LED_B_NO();
delay_ms(500);
LED_ALL_OFF();
delay_ms(500);
}
}
led.h
#ifndef __LED_H_
#define __LED_H_
#include "stdio.h"
#include "sys.h"
void LED_Init();
void LED_ALL_OFF();
void LED_R_NO();
void LED_G_NO();
void LED_B_NO();
#endif
led.c
#include "led.h"
void LED_Init(){
GPIO_InitTypeDef GPIO;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO.GPIO_Pin=GPIO_Pin_5;
GPIO.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO.GPIO_Pin=GPIO_Pin_0;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO.GPIO_Pin=GPIO_Pin_1;
GPIO_Init(GPIOB,&GPIO);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
}
void LED_ALL_OFF(){
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOB,GPIO_Pin_0);
GPIO_SetBits(GPIOB,GPIO_Pin_1);
}
void LED_R_NO(){
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
}
void LED_G_NO(){
GPIO_ResetBits(GPIOB,GPIO_Pin_0);
}
void LED_B_NO(){
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
}