stm32F407学习之2: 点亮LED灯
1. 原理图

PF15-------------------->LED
2.编写程序
bsp_led.h
#ifndef __BSP_LED_H__
#define __BSP_LED_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "stm32f4xx.h" // 使用标准库头文件
void Led_Init(void);
void Led_On(void);
void Led_Off(void);
void Led_Toggle(void);
#ifdef __cplusplus
}
#endif
#endif
bsp_led.c
#include "bsp_led.h"
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
void Led_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); // 使能GPIOF时钟
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
/* 配置PF15引脚为输出模式,推挽输出,无上拉/下拉电阻 */
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_15; // 指定PF15引脚
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; // 设置为输出模式
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 设置为推挽输出
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; // 不使用内部上拉/下拉电阻
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; // 设置GPIO速度(可根据需求调整为中速或高速)
/* 应用配置 */
GPIO_Init(GPIOF, &GPIO_InitStruct);
}
/**
* @brief 打开LED(假设低电平点亮LED)
* @param None
* @retval None
*/
void Led_On(void)
{
GPIO_ResetBits(GPIOF, GPIO_Pin_15); // 将PF15设置为低电平
}
/**
* @brief 关闭LED(假设低电平点亮LED)
* @param None
* @retval None
*/
void Led_Off(void)
{
GPIO_SetBits(GPIOF, GPIO_Pin_15); // 将PF15设置为高电平
}
/**
* @brief 切换LED状态
* @param None
* @retval None
*/
void Led_Toggle(void)
{
GPIOF->ODR ^= GPIO_Pin_15; // 切换PF15的电平状态
}
main.c
#include "stm32f4xx.h"
#include "bsp_led.h"
void Delay(__IO u32 nCount);
void Delay(__IO uint32_t nCount) //简单的延时函数
{
for(; nCount != 0; nCount--);
}
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
/* LED 端口初始化 */
Led_Init();
/* 控制LED灯 */
while (1)
{
Led_Toggle();
Delay(0xFFFFFF);
}
}
3. 目录结构

4. 编译运行
通过编译后,将程序下载到开发板中,可以看到LED开始闪烁。至此,完成了一个最简单的点灯LED程序。
接下来,我们将移植rtthread操作系统,用来点亮LED。

浙公网安备 33010602011771号