使用外部时钟作为时钟输入,每个ETR上升沿计数一次,每记录10个ETR上升沿,产生一次更新中断(update interrupt),在更新中断中处理想要的结果。如果要每2个ETR上升沿计数一次,只需修改寄存器TIMx_SMCR的ETPS[1:0]位的值。 定时器初始化# void Timer_Init(void) { /* 开启时钟 */ RCC_APB1PeriphClockCmd(RCC_APB...
TIM2->CR1 |=0x0080; //Auto-reload preload enable TIM2->EGR |=0x0001; //Re-initialize the counter and generates an update of the registers. TIM2->DIER|= 0x0001; //Update interrupt enabled TIM2->CR1 |=0x01; //enable timer2 } 中断服务函数如下: void TIM2_IRQHandler(void) { TIM2-...
// Step 3: Enable TIM2 update interrupt TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); // Step 4: Enable TIM2 TIM_Cmd(TIM2, ENABLE); } void TIM2_IRQHandler(void) { if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) { // Clear the TIM2 update interrupt flag TIM_ClearITPendingBit...
TIM6和TIM7状态寄存器(TIMx_SR) UIF:更新中断标志 (Update interrupt flag) 硬件在更新中断时设置该位,它由软件清除。 0:没有产生更新。 1:产生了更新中断。下述情况下由硬件设置该位: – 计数器产生上溢或下溢并且TIMx_CR1 中的UDIS=0; – 如果TIMx_CR1 中的URS=0并且UDIS=0,当使用TIMx_EGR 寄存器...
if(interrupt == mode){ key_exit_init();key_NVIC_init();} else { } } /*配置中断控制器,...
TIM_ClearFlag(TIM2, TIM_FLAG_Update);/* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);/* TIM2 enable counter [允许tim2计数]*/ TIM_Cmd(TIM2, ENABLE); } TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在...
/* Enable TIM2 Update interrupt [TIM2溢出中断允许]*/ TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); /* TIM2 enable counter [允许tim2计数]*/ TIM_Cmd(TIM2, ENABLE); } TIM_Period设置了在下一个更新事件装入活动的自动重装载寄存器周期的值。它的取值必须在0x0000和0xFFFF之间。
位0 UIF:更新中断标志 (Update interrupt flag) 该位在发生更新事件时通过硬件置 1。但需要通过软件清零。 0:未发生更新。 1:更新中断挂起。该位在以下情况下更新寄存器时由硬件置 1: — 上溢或下溢并且当 TIMx_CR1 寄存器中 UDIS = 0 时。
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);/*Enables the TIM2 counter*/TIM_Cmd(TIM2, ENABLE);/*Enables the TIM2 Capture Compare channel 1 Interrupt source*/TIM_ITConfig(TIM2, TIM_IT_Update, DISABLE ); } voidTIM2_IRQHandler(void) ...
void starTimer(void){ TIM_ClearFlag(TIM5, TIM_FLAG_Update);TIM_ITConfig(TIM5, TIM_IT_Update,...