我移植论坛的例程成功开启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); //先停计数器?
TIM_ARRPreloadConfig(TIM3, DISABLE);
USART_ClearITPendingBit(USART1, USART_IT_RXNE);//????????±ê??
TIM3_SetPeriod(20);//设置周期20ms
TIM_Cmd(TIM3, ENABLE); //开启定时器
}
}
我要在USART中断里面怎么设置TIM3 才能使有USART中断的时候TIM3不断清零重新计数?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
直接一个 TIM_SetCounter(TIM3, 0);不就得了?
---------------------------------
谢谢大侠,我也刚搜到这个,
在USART里面使能TIM3 ,再设TIM_SetCounter(TIM3,0);但还是实现不了我要的功能。不知道什么原因?
---------------------------------
理论上我不断进入usart中断把tim3的cnt清了应该就不会产生溢出中断了吧?但现在实现不了这个功能。
一周热门 更多>