本帖最后由 ze0075 于 2010-11-10 16:53 编辑
我想用tim2做串口通讯的timeout,我的设置如下
TIM_TimeBaseStructure.TIM_Period = 100; //10ms
TIM_TimeBaseStructure.TIM_Prescaler = 7199;
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //时间分割值
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //定时器模式 向上计数
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //初始化定时器2
TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);
TIM_ClearFlag(TIM2, TIM_FLAG_Update); //清标志,避免中断重复产生
TIM_Cmd(TIM2, ENABLE); //使能
问题是当我计时到一半,不触发中断而重新开始计数的时候(就是人为重载),应该怎么做?
想到两个思路:
1、直接改写相应寄存器
2 、禁掉中断使能,设置时加入
TIM_UpdateRequestConfig(TIM2, TIM_UpdateSource_Regular);
让计数器在下一个更新事件停止,然后再重开TIM
实在不行就只好每次对tim初始化了 |