在keil编辑器用STM32F103RE芯片编写一个倒计时60分钟定时器
时间: 2024-05-31 14:07:35 浏览: 112
以下是基于STM32F103RE芯片的60分钟倒计时定时器程序,使用Keil编辑器进行编写:
#include "stm32f10x.h"
void TIM2_IRQHandler(void) {
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
TIM_Cmd(TIM2, DISABLE); // 关闭计时器
TIM_ClearITPendingBit(TIM2, TIM_IT_Update); // 清除中断标志位
}
}
int main(void) {
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // 启用TIM2时钟
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; // 中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; // 抢占优先级
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 子优先级
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; // 中断使能
NVIC_Init(&NVIC_InitStructure); // 初始化NVIC
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_TimeBaseStructure.TIM_Period = 60000 - 1; // 定时器周期,每分钟60秒,计时60分钟,因此为60000-1
TIM_TimeBaseStructure.TIM_Prescaler = 7200 - 1; // 计数器分频系数,时钟频率为72MHz,所以分频系数为7200
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; // 时钟分频
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); // 初始化TIM2
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // 使能计时器溢出中断
TIM_Cmd(TIM2, ENABLE); // 启动计时器
while (1) {
if (TIM_GetFlagStatus(TIM2, TIM_FLAG_Update) == SET) {
printf("Time is up!\n"); // 倒计时结束
TIM_ClearFlag(TIM2, TIM_FLAG_Update); // 清除中断标志位
break;
}
}
while (1); // 程序结束
return 0;
}
以上程序将启用STM32F103RE芯片的TIM2计时器模块,以1秒的频率进行计时,60分钟后触发中断,输出倒计时结束信息。
阅读全文