[STM32F0] BUG:STM32F051R8T6的TIM2捕获中断状态标志位偶尔读取失败

[复制链接]
 楼主| A7_COOL 发表于 2015-5-6 11:19 | 显示全部楼层 |阅读模式
用STM32F051在做一个无刷直流电机的驱动时,用IM2的三个通道异或输入到通道1进行对电机的HALL信号进行捕获做换相,在测试过程中发现,在进入TIM2的捕获中断读取TIM2_SR寄存器判断捕获中断标志时,存在偶尔读到的捕获中断标志CC1IF为0的情况。下面这是我在中断读取标志位的代码:
  1.         if(TIM2->SR & TIM_SR_CC1IF)                        //采用这种方式会存在读不到CC1IF标志位的情况??????
  2.         {
  3.                 TIM2_CCR1_temp = TIM2->CCR1;
  4.                 TIM2->SR &= ~TIM_SR_CC1IF;
  5.                 TIM2->DIER &= ~TIM_DIER_CC1IE;        //禁止TIM2的捕获中断
  6.                 TIM16->CNT = 0;               
  7.                 TIM16->SR = 0;
  8.                 TIM16->DIER |= TIM_DIER_UDE;        //使能TIM16更新事件触发DMA请求
  9. //                MotorCommutator(&g_MC_Structure, &g_DataBackupBlock);
  10.         }

这个BUG在Errata sheet中并未有相关的说明。不知道是我的读取方式不对,还是芯片本身就有这个BUG。
mmuuss586 发表于 2015-5-6 22:31 | 显示全部楼层
051没用过;
用其它芯片做过2路的无刷都没啥问题;
mmuuss586 发表于 2015-5-6 22:32 | 显示全部楼层
F0,到是用030的TIM3试过;
读到是0的时候,看下是不是其它中断标志位引起的;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

46

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部