①查看灯引脚
由开发板的原理图可知:LED0灯对应PF9引脚。

②查看手册,存储器映射定义好对应寄存器的地址
stm32f4xx.h
cs
#define PERIPH_BASE ((unsigned int)0x40000000)
#define AHB1PERIPH_BASE (PERIPH_BASE + 0x00020000)
#define GPIOF_BASE (AHB1PERIPH_BASE + 0x1400)
#define GPIOF_MODER *(unsigned int*)(GPIOF_BASE+0x00)
#define GPIOF_OTYPER *(unsigned int*)(GPIOF_BASE+0x04)
#define GPIOF_OSPEEDR *(unsigned int*)(GPIOF_BASE+0x08)
#define GPIOF_PUPDR *(unsigned int*)(GPIOF_BASE+0x0C)
#define GPIOF_IDR *(unsigned int*)(GPIOF_BASE+0x10)
#define GPIOF_ODR *(unsigned int*)(GPIOF_BASE+0x14)
#define GPIOF_BSRR *(unsigned int*)(GPIOF_BASE+0x18)
#define GPIOF_LCKR *(unsigned int*)(GPIOF_BASE+0x1C)
#define GPIOF_AFRL *(unsigned int*)(GPIOF_BASE+0x20)
#define GPIOF_AFRH *(unsigned int*)(GPIOF_BASE+0x24)
#define RCC_BASE (AHB1PERIPH_BASE + 0x3800)
#define RCC_AHB1ENR *(unsigned int*)(RCC_BASE+0x30)
③防止编译报错
在main文件里,定义空白函数,骗过编译器不报错。

④查看相关手册,定义引脚
(1)使能GPIOF时钟



(2)将PF9引脚定义成通用输出模式

可知:MODER9设置01

(3)将PF9设置成输出推挽模式



(4)设置高速输出


(5)PF9设置上拉
(上下拉模式不影响引脚电平变化,但上拉能小幅提高电流输出能力)



(6)设置电平
查看原理图可知设置低电平灯亮


初始化:

循环:

⑤代码
main.c
cs
#include "stm32f4xx.h"
void SystemInit(void)
{
}
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
int main()
{
RCC_AHB1ENR |= (1<<5);
GPIOF_MODER &= ~(0x03<<9*2);
GPIOF_MODER |= (1<<9*2);
GPIOF_OTYPER &= ~(1<<9);
GPIOF_OTYPER |= (0<<9);
GPIOF_OSPEEDR &= ~(0x03<<9*2);
GPIOF_OSPEEDR |= (0x03<<9*2);
GPIOF_PUPDR &= ~ (0x03<<9*2);
GPIOF_PUPDR |= (0x01<<9*2);
GPIOF_BSRR &= ~(1<<(16+9));
GPIOF_BSRR &= ~(1<<(9));
while(1)
{
//点亮LED0灯,PF9
GPIOF_BSRR |= (1<<(16+9));
}
}