其他分享
首页 > 其他分享> > 【1】STM32:跑马灯配置

【1】STM32:跑马灯配置

作者:互联网

一、库函数版本

1.新建一个 led.h 文件

 

#ifndef _LED_H
#define _LED_H
#include "sys.h"

#define LED0 PBout(5) // DS0
#define LED1 PEout(5) // DS1

void LED_Init(void); // LED接口初始化

#endif

  这段代码里面最关键就是 2 个宏定义,通过位带操作 PB5 输出高低电平从而控制 LED0 。

LED0=1; //通过位带操作控制 LED0 的引脚 PB5 输出高电平
LED0=0; //通过位带操作控制 LED0 的引脚 PB5 输出低电平

  同样也可以使用固件库操作和寄存器操作,来实现 IO 口操作。

GPIO_SetBits(GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 1,等同 LED0=1;
GPIO_ResetBits (GPIOB, GPIO_Pin_5); //设置 GPIOB.5 输出 0,等同 LED0=0;

  还可以通过直接操作寄存器,BRR 和 BSRR 的方式来操作 IO 口输出高低电平。

GPIOB->BRR=GPIO_Pin_5; //设置 GPIOB.5 输出 1,等同 LED0=1;
GPIOB->BSRR=GPIO_Pin_5; //设置 GPIOB.5 输出 0,等同 LED0=0;

2.新建一个 led.c文件

#include "led.h"

void LED_Init(void)
{
	
	GPIO_InitTypeDef GPIO_InitStructure;
	
	// 使能GPIOB、GPIOE端口时钟
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); 
	
	// 配置GPIOB.5 推挽输出
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	GPIO_SetBits(GPIOB, GPIO_Pin_5);
	
	// 配置GPIOE.5 推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
	GPIO_Init(GPIOE, &GPIO_InitStructure);
	GPIO_SetBits(GPIOE, GPIO_Pin_5);
}

  

标签:LED0,GPIOB,Pin,输出,配置,STM32,跑马灯,InitStructure,GPIO
来源: https://www.cnblogs.com/djcoder/p/13782373.html