STM32f103c8t6的定时器使用72mhz按秒计时
要使用STM32f103c8t6的定时器进行秒计时,需要进行以下步骤:
- 配置系统时钟为72MHz。
- 初始化定时器,选择计数模式为向上计数,并设置计数频率为1Hz。
- 启动定时器,并等待定时器溢出。
- 在定时器溢出中断中更新计数器,并重新启动定时器。
以下是一个简单的示例代码:
#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;
}
}
``
原文地址: https://www.cveoy.top/t/topic/fDiF 著作权归作者所有。请勿转载和采集!