【STM32F103ZET6——库函数】1.流水灯

目录

配置LED灯引脚

引脚图

配置引脚输出电平

使能时钟

例程

例程说明

main.h

main.c

led.h

led.c

配置LED灯引脚

引脚图

  1. 配置引脚号

  2. 配置引脚速度

  3. 配置引脚的模式

  4. 引脚初始化

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因心,三人水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值