![STM32定时器中断影响主程序PWM输出[附解决方案],第1张 STM32定时器中断影响主程序PWM输出[附解决方案],第1张](/aiimages/STM32%E5%AE%9A%E6%97%B6%E5%99%A8%E4%B8%AD%E6%96%AD%E5%BD%B1%E5%93%8D%E4%B8%BB%E7%A8%8B%E5%BA%8FPWM%E8%BE%93%E5%87%BA%5B%E9%99%84%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88%5D.png)
我通过TIMER1输出四路PWM控制电机,通过TIMER2产生10ms定时器中断进行OLED菜单的 *** 作。
程序如下:
int main(void)
{
delay_init(); //延时函数初始化
//NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
//uart_init(115200); //串口与TIMER1撞车
TIM1_PWM_Init(7199,0); //越大越快
Motor_BIG(0,0);
Motor_Tiny(0);
TIM2_Int_Init(99,7199);
TIM3_PWM_Init(7199,0);
// Motor_Step(0,0);
LED_Init(); //初始化与LED连接的硬件接口
EXTIX_Init(); //外部中断初始化
KEY_Init();
OLED_Init();
OLED_Clear();
while(1)
{
TIM_SetCompare3(TIM1,6400);
}
}
现象是中断函数可以进入,也就是菜单可以正常被按键 *** 作,但是电机输出没有任何反应,PWM输出也无效。
经过几次修改,把定时器中断频率修改一下,即可完美解决。
目前不知道为什么。
修改如下。
TIM2_Int_Init(999,7199);
这是我在原子论坛发的帖子,有配置代码。
http://www.openedv.com/thread-334959-1-1.html
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)