新手上路
- 积分
- 45
- 金钱
- 45
- 注册时间
- 2020-7-21
- 在线时间
- 8 小时
|
本帖最后由 fgq542 于 2020-8-4 09:35 编辑
我听了红外遥控实验课,仔细思考了课程27寄存器版的原代码,发现一个疑问。就是TIM4中断服务程序,void TIM4_IRQHandler(void) 部分原代码如下:
void TIM4_IRQHandler(void)
{
......
if(TIM_GetITStatus(TIM4,TIM_IT_CC4)!=RESET)
{
if(RDATA)
{
TIM_OC4PolarityConfig(TIM4,TIM_ICPolarity_Falling);
TIM_SetCounter(TIM4,0);
RmtSta|=0X10; // 中间某个时间遥控器键值处于高平时, 当此红色区代码退出后定时器开始重新计时一段时间后还未发生下降沿中断, 发生了一个定时器更新中断, 假设此时计数器值为N1, 程序处理完此中断后, 定时器又会重新计数, 再发生下降沿中断程序再处理此中断时, 再读计数器的值就会失了定时器更新中断前的计数值N1, 不知道这个问题是怎么处理的. }else
{
Dval=TIM_GetCapture4(TIM4);
TIM_ICInitStructure1.TIM_Channel = TIM_Channel_4;
.......
|
|