打印
[STM32F1]

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

[复制链接]
594|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;

if(angle>0)
    motor1Direction(1);
else
    motor1Direction(0);
angle = abs(angle);
motor1Enable();
for(i=0;i<angle;i++)
{
    TIM3_PWM_Init(1000-1,72-1);
    TIM_Cmd(TIM3, ENABLE);
    delay_ms(2);printf("000");
}
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的定义和初始化产生了冲突

使用特权

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

本版积分规则

52

主题

769

帖子

1

粉丝