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);    }}

代码解析:

  1. 包含头文件: #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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录