定时器如何清零从头计数?

2019-10-15 18:36发布

我移植论坛的例程成功开启TIM3并且用示波器测量IO确认周期设定是正确的,现在想在USART中断里面重置计数器,实现有USART接收中断时不产生定时中断,但不知道怎么实现计数器清零。好像设定后指示把周期重置了,但还是不断地进入定时器中断。(SELE0-SET RSR对应一个IO的反转用来测定时器周期)如果我用串口软件一直定时1ms发送数据过来应该sele0是个固定的电平不会反转。

void TIM3_IRQHandler(void)   //TIM3中断处理
{
     if (TIM_GetITStatus(TIM3, TIM_IT_Update) == SET) //是溢出中断?
    {
    TIM_ARRPreloadConfig(TIM3, DISABLE); //??
        TIM_ClearITPendingBit(TIM3, TIM_IT_Update );  //清溢出标志位
         if(usart1cmdflag==0)
        {
            usart1cmdflag=1;
            SELE0_SET;
        }
        else
        {
            usart1cmdflag=0;
            SELE0_RST;
        }
     }
}

void USART1_IRQHandler(void)
{
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//??????????????
    {
         TIM_Cmd(TIM3, DISABLE);  //先停计数器?
        //禁止ARR预装载缓冲器  
   
TIM_ARRPreloadConfig(TIM3, DISABLE); 
        USART_ClearITPendingBit(USART1, USART_IT_RXNE);//????????±ê??
        TIM3_SetPeriod(20);//设置周期20ms
        TIM_Cmd(TIM3, ENABLE);  //开启定时器
    }
}

我要在USART中断里面怎么设置TIM3 才能使有USART中断的时候TIM3不断清零重新计数?


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
正点原子
1楼-- · 2019-10-16 10:34
 精彩回答 2  元偷偷看……
ArchiChain
2楼-- · 2019-10-16 15:48
回复【7楼】正点原子:
---------------------------------
如果我中途不断地清CNT应该不会产生溢出中断啊?
ArchiChain
3楼-- · 2019-10-16 18:28
再次谢谢 2楼STM32VBT6 兄弟和原子版。

一周热门 更多>