打印

STM32F051 不进刹车中断,谁帮我看看,谢谢!

[复制链接]
3168|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
elecd|  楼主 | 2013-7-24 19:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用了6路PWM驱动电机,使能了刹车功能,也开启了刹车中断允许,还开起了EXTI_IMR 和 EMR 刹车信号输入后,PWM波形全部消失,进入刹车状态。就是不进中断,烦死了。

/*主输出能使 刹车能使 高电平刹车 空闲状态无论定时器运行与否均起效,死区时间2.5us 120*1/48us*/
TIM1->BDTR = 120|(TIM_BDTR_MOE | TIM_BDTR_OSSI | TIM_BDTR_OSSR | TIM_BDTR_LOCK_1) | TIM_BDTR_BKE ;
/*TIM1 自动重载 向上计数*/
TIM1->CR1 = TIM_CR1_ARPE | TIM_CR1_CEN;
       
//TIM1->EGR = TIM_EGR_BG;
EXTI->IMR |= 0X2000;                    //开启Exti 13
EXTI->EMR |= 0X2000;                   //开启Exti 13
TIM1->SR &= (!TIM_SR_BIF);
TIM1->DIER= TIM_DIER_BIE;       //开启刹车中断允许
       
TIM_CtrlPWMOutputs(TIM1, ENABLE);       


void TIM1_BRK_UP_TRG_COM_IRQHandler(void)    //中断函数
{
     TIM1->SR &= (!TIM_SR_BIF);
}


沙发
elecd|  楼主 | 2013-7-24 19:30 | 只看该作者
参考手册上这么说:
如果设置了TIMx_DIER寄存器中的BIE位,当刹车状态标志(TIMx_SR寄存器中的BIF位)
为’1’时,则产生一个中断。

当刹车后,停下程序,看标志位,BIE=1  BIF=1 就该近中断才对。
真见鬼,今天倒霉透了。

使用特权

评论回复
板凳
yaorumeng| | 2013-7-24 20:30 | 只看该作者
看来半天,不懂。感觉很复杂的,你加油呀!

使用特权

评论回复
地板
airwill| | 2013-7-25 10:02 | 只看该作者
TIM1->BDTR = 120|(TIM_BDTR_MOE | TIM_BDTR_OSSI | TIM_BDTR_OSSR | TIM_BDTR_LOCK_1) | TIM_BDTR_BKE ;

这个设置是没有问题的.
1. 是不是 IO 口设置有问题
2. TIM_BDTR_LOCK_1 先去掉或分两次完成这行.

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
elecd + 3 很给力!
5
ADsuper| | 2017-9-30 18:15 | 只看该作者
建议多用库函数

使用特权

评论回复
6
21mengnan| | 2017-9-30 20:06 | 只看该作者
这个论坛可以找到很多刹车功能的介绍帖的。

使用特权

评论回复
7
598330983| | 2017-10-1 22:13 | 只看该作者
刹车用的少,貌似很复杂的概念,我都懒得用寄存器搞

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

40

帖子

1

粉丝