STM32F103C8T6 LED闪烁代码示例 - 定时器控制
STM32F103C8T6 LED闪烁代码示例 - 基于定时器控制
本篇博客将提供一个基于STM32F103C8T6微控制器的简单代码示例,演示如何使用定时器和GPIO控制LED灯的开关,实现LED闪烁效果。c#include 'stm32f10x.h'
void delay_ms(uint32_t ms){ // 基于SysTick定时器的延时函数 uint32_t tick_start = SysTick->VAL; uint32_t delay_ticks = ms * (SystemCoreClock / 1000 / 8); // 假设系统时钟为8MHz while ((SysTick->VAL - tick_start) < delay_ticks) { }}
int main(void){ // 初始化RCC时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
// 配置GPIO引脚 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC, &GPIO_InitStruct);
// 配置SysTick定时器 if (SysTick_Config(SystemCoreClock / 1000)) { // 错误处理 while (1) { } } while (1) { // 点亮LED GPIO_SetBits(GPIOC, GPIO_Pin_13); // 延时1秒 delay_ms(1000); // 熄灭LED GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 延时1秒 delay_ms(1000); }}
代码解析:
- 包含头文件:
#include 'stm32f10x.h'引入STM32F10x系列芯片库函数的头文件。2. 延时函数:delay_ms()函数利用SysTick定时器实现精确的毫秒级延时。3. 主函数: *RCC_APB2PeriphClockCmd()函数使能GPIOC端口的时钟。 *GPIO_Init()函数将PC13引脚初始化为输出模式,用于控制LED灯。 *SysTick_Config()函数配置SysTick定时器,为延时函数提供时间基准。 *while(1)循环中,GPIO_SetBits()和GPIO_ResetBits()函数分别点亮和熄灭LED灯,配合delay_ms()函数实现LED闪烁效果。
总结:
这段代码清晰地展示了如何使用STM32F103C8T6的GPIO和定时器资源控制LED灯。你可以根据这段代码进行修改和扩展,实现更复杂的LED控制功能。
注意:
- 这段代码假设你已经搭建好了STM32F103C8T6的开发环境,并将LED灯连接到了PC13引脚。* 请根据实际情况修改代码中的参数,例如系统时钟频率和LED灯连接的GPIO引脚。
原文地址: https://www.cveoy.top/t/topic/bnrX 著作权归作者所有。请勿转载和采集!