stm32F103led闪烁
时间: 2024-12-28 17:25:38 浏览: 10
### STM32F103 LED 闪烁 示例代码
对于STM32F103系列微控制器而言,实现LED闪烁功能主要依赖于配置GPIO端口以及利用定时器或软件延迟来控制LED的状态切换。下面展示一段基于HAL库的简单示例程序用于使能和禁用连接到指定引脚上的LED。
#### 初始化工程环境
确保已经安装好Keil MDK开发工具,并通过CubeMX生成初始化代码框架。选择合适的时钟源和其他外设参数后导出项目至Keil IDE中继续编辑[^1]。
#### 修改 `main.c` 文件中的主函数部分如下:
```c
#include "stm32f1xx_hal.h"
// 定义使用的 GPIO 引脚编号 (这里假设使用的是 PA5 连接了一个外部LED)
#define LED_PIN GPIO_PIN_5
#define LED_GPIO_PORT GPIOA
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void){
/* Reset of all peripherals, Initializes the Flash interface and Systick. */
HAL_Init();
// 配置系统时钟
SystemClock_Config();
// 初始化所有已配置的外围设备
MX_GPIO_Init();
while(1){
// 点亮LED
HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_SET);
// 延迟一段时间
HAL_Delay(500);
// 关闭LED
HAL_GPIO_WritePin(LED_GPIO_PORT, LED_PIN, GPIO_PIN_RESET);
// 再次延迟相同的时间间隔
HAL_Delay(500);
}
}
/**
* @brief System Clock Configuration
* The system clock is configured as follow :
* System Clock source = PLL (HSE)
* SYSCLK(Hz) = 72000000
* HCLK(Hz) = 72000000
* AHB Prescaler = 1
* APB1 Prescaler = 2
* APB2 Prescaler = 1
* ADC Prescaler = 2
* USB OTG FS reference clock = 48 MHz
*/
void SystemClock_Config(void){...} // 此处省略具体实现细节
/* USER CODE BEGIN PFP */
/* USER CODE END PFP */
/* Private user code follows (User defined functions)*/
static void MX_GPIO_Init(void){
__HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟
GPIO_InitTypeDef GPIO_InitStruct = {0};
// 设置PA5为推挽输出模式
GPIO_InitStruct.Pin = LED_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_PORT,&GPIO_InitStruct);
}
```
这段代码实现了基本的功能需求,在每次进入无限循环体内部都会先将LED点亮再经过半秒时间之后关闭它;接着再次等待另外半个周期才重复上述操作从而形成规律性的明暗变化效果[^2]。
阅读全文