要使用STM32f103c8t6的定时器进行秒计时,需要进行以下步骤:

  1. 配置系统时钟为72MHz。
  2. 初始化定时器,选择计数模式为向上计数,并设置计数频率为1Hz。
  3. 启动定时器,并等待定时器溢出。
  4. 在定时器溢出中断中更新计数器,并重新启动定时器。

以下是一个简单的示例代码:

#include "stm32f10x.h"

volatile uint32_t timer_count = 0;

void TIM2_IRQHandler(void)
{
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
    {
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
        timer_count++;
        TIM_SetCounter(TIM2, 0);
    }
}

int main(void)
{
    // 配置系统时钟为72MHz
    RCC_DeInit();
    RCC_HSEConfig(RCC_HSE_ON);
    RCC_WaitForHSEStartUp();
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
    RCC_PLLCmd(ENABLE);
    while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    RCC_HCLKConfig(RCC_SYSCLK_Div1);
    RCC_PCLK1Config(RCC_HCLK_Div2);
    RCC_PCLK2Config(RCC_HCLK_Div1);

    // 初始化定时器
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
    TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
    TIM_TimeBaseStructure.TIM_Period = 71999999; // 1Hz
    TIM_TimeBaseStructure.TIM_Prescaler = 0;
    TIM_TimeBaseStructure.TIM_ClockDivision = 0;
    TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

    // 启动定时器
    TIM_ClearFlag(TIM2, TIM_FLAG_Update);
    TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
    NVIC_EnableIRQ(TIM2_IRQn);
    TIM_Cmd(TIM2, ENABLE);

    while (1)
    {
        // 等待定时器溢出
        while (timer_count < 1);

        // 定时器溢出,执行相应操作
        // ...

        // 重置计数器
        timer_count = 0;
    }
}
``
STM32f103c8t6的定时器使用72mhz按秒计时

原文地址: https://www.cveoy.top/t/topic/fDiF 著作权归作者所有。请勿转载和采集!

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