[STM32F1] stm32f103c6t6关于定时器和变量定义冲突的奇怪问题

[复制链接]
770|13
 楼主| 无法去污粉 发表于 2023-11-30 23:48 | 显示全部楼层 |阅读模式

keil5中下面这段代码中,只要再新定义一个变量并赋值(例如代码里的变量a),那么TIM3_PWM_Init、TIM_Cmd两行就见不到执行效果(电机不转),printf是可以输出的。只要删掉int a=0;立马正常。这可能是哪里的问题?

//步进电机转动指定的角度
void motor1RotateAngle(float angle)
{
int i;
int a=0;

  1. if(angle>0)
  2.     motor1Direction(1);
  3. else
  4.     motor1Direction(0);
  5. angle = abs(angle);
  6. motor1Enable();
  7. for(i=0;i<angle;i++)
  8. {
  9.     TIM3_PWM_Init(1000-1,72-1);
  10.     TIM_Cmd(TIM3, ENABLE);
  11.     delay_ms(2);printf("000");
  12. }
  13. motor1Disable();


elephant00 发表于 2023-12-6 16:08 | 显示全部楼层
可能是由于a的定义和初始化与TIM3_PWM_Init和TIM_Cmd函数的执行产生了冲突,导致程序无法正常执行。
两只袜子 发表于 2023-12-6 16:09 | 显示全部楼层
你可以尝试将a的定义和初始化移动到主函数外部,在主函数内直接调用a的初始化函数。
jcky001 发表于 2023-12-6 16:10 | 显示全部楼层
建议你检查一下代码中是否存在其他变量或函数与a的定义和初始化产生了冲突
您需要登录后才可以回帖 登录 | 注册

本版积分规则

57

主题

808

帖子

1

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