打印
[STM32F0]

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

[复制链接]
1587|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
A7_COOL|  楼主 | 2015-5-6 11:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用STM32F051在做一个无刷直流电机的驱动时,用IM2的三个通道异或输入到通道1进行对电机的HALL信号进行捕获做换相,在测试过程中发现,在进入TIM2的捕获中断读取TIM2_SR寄存器判断捕获中断标志时,存在偶尔读到的捕获中断标志CC1IF为0的情况。下面这是我在中断读取标志位的代码:
        if(TIM2->SR & TIM_SR_CC1IF)                        //采用这种方式会存在读不到CC1IF标志位的情况??????
        {
                TIM2_CCR1_temp = TIM2->CCR1;
                TIM2->SR &= ~TIM_SR_CC1IF;
                TIM2->DIER &= ~TIM_DIER_CC1IE;        //禁止TIM2的捕获中断
                TIM16->CNT = 0;               
                TIM16->SR = 0;
                TIM16->DIER |= TIM_DIER_UDE;        //使能TIM16更新事件触发DMA请求
//                MotorCommutator(&g_MC_Structure, &g_DataBackupBlock);
        }

这个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

粉丝