stm32f103 计时器计时10s
时间: 2024-01-08 09:02:54 浏览: 119
在STM32F103芯片上使用计时器进行计时是一种常见的做法。下面是一个使用STM32F103的计时器进行10秒计时的示例代码:
```c
#include "stm32f10x.h"
void TIM2_Init(void)
{
// 使能定时器2的时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
// 定时器2的配置
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 9999; // 计数器自动重装值
TIM_TimeBaseStructure.TIM_Prescaler = 7199; // 预分频器
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 计数器向上计数
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; // 重复计数器
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
// 使能定时器2的更新事件
TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);
// 使能定时器2
TIM_Cmd(TIM2, ENABLE);
}
int main(void)
{
// 初始化定时器2
TIM2_Init();
// 等待计时器2计时10秒
while (TIM_GetCounter(TIM2) < 10000);
// 关闭定时器2
TIM_Cmd(TIM2, DISABLE);
// 执行其他操作...
while (1);
}
```
这段代码使用了定时器2进行计时,预分频器的值为7199,计数器自动重装值为9999。这样,定时器2的计数频率为72000000 / (7199 + 1) = 10000 Hz,即每秒计数10000次。因此,等待计时器2的计数器值达到10000 * 10 = 100000时,表示已经计时了10秒。
请注意,以上代码仅为示例,实际使用时需要根据具体的硬件和需求进行适当的修改。
阅读全文