看LED原理图
由图可知:
- LED0对应PF9引脚
- LED1对应PF10引脚
- 两个LED灯都是引脚是低电平时产生电势差才亮,所以都拉低就亮
- GPIO输出模式:推挽输出(实现强上拉下拉)而开漏输出(由外部上拉下拉决定)
GPIO函数库介绍
GPIO_Init - GPIO初始化函数
读取输入电平函数
读取输出电平函数
设置输出电平函数
开始实现代码
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);
}
}