【stm32】F407ZGT6 - LED跑马灯

350 阅读1分钟

看LED原理图

image.png 由图可知:

  • LED0对应PF9引脚
  • LED1对应PF10引脚
  • 两个LED灯都是引脚是低电平时产生电势差才亮,所以都拉低就亮
  • GPIO输出模式:推挽输出(实现强上拉下拉)而开漏输出(由外部上拉下拉决定)

GPIO函数库介绍

GPIO_Init - GPIO初始化函数

image.png

读取输入电平函数

image.png

读取输出电平函数

image.png

设置输出电平函数

image.png

开始实现代码

led.c

#include "led.h"
#include "stm32f4xx.h" 
// led 初始化
void LED_Init(void) {
	GPIO_InitTypeDef GPIO_Init_t; 			// 句柄
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);	//使能 GPIOF 时钟
	//GPIOF9,F10 初始化设置
	GPIO_Init_t.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; // LED0 和 LED1 对应 IO 口
	GPIO_Init_t.GPIO_Mode = GPIO_Mode_OUT;		// 普通输出模式
	GPIO_Init_t.GPIO_OType = GPIO_OType_PP;		// 推挽输出(通用
	GPIO_Init_t.GPIO_Speed = GPIO_Speed_100MHz;	// 100MHz(无所谓
	GPIO_Init_t.GPIO_PuPd = GPIO_PuPd_UP;		// 上拉(默认不点亮
	GPIO_Init(GPIOF, &GPIO_Init_t);			// 初始化 GPIOF组
	GPIO_SetBits(GPIOF,GPIO_Pin_9);			// 点亮PF9
	GPIO_SetBits(GPIOF,GPIO_Pin_10);		// 点亮PF10
}

main.c

#include "stm32f4xx.h"
#include "usart.h"
#include "delay.h"
#include "led.h"

int main(void)
{
	delay_init(168);
	LED_Init();
  while(1){
		GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		delay_ms(50);
		GPIO_ResetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
		delay_ms(50);
	}
}