stm32之普通定时器
#include "time6.h"
#include "Led.h"
void TIME6_Init(void)
{// 启用TIM6时钟RCC->APB1ENR |= RCC_APB1ENR_TIM6EN;// 设置预分频7199, 72000000 10kHZTIM6->PSC = 7199;// 自动重装载值9999,技术10000次产生一个UEVTIM6->ARR = 9999;// 更新中断使能TIM6->DIER |= TIM_DIER_UIE;// 配置nvicNVIC_SetPriorityGrouping(3);NVIC_SetPriority(TIM6_IRQn, 0);NVIC_EnableIRQ(TIM6_IRQn);// 开启定时器TIM6->CR1 |= TIM_CR1_CEN;
}// 中断程序
void TIM6_IRQHandler(void)
{// 清中断标志位TIM6->SR &= ~TIM_SR_UIF;LED_Toggle(LED_1);
}
注意:
- 计数器溢出才产生一个更新事件U。
- 自动重装载寄存器是带有影子的寄存器,可以手动把预加载寄存器的值刷入(ARPE:自动重装载预装载使能 (Auto-reload preload enable)置零)影子寄存器。如果不开启使能位则在更新事件产生后才刷入。
- PSC预分频器也是影子寄存器,但是没