手臂皮质 m4 中的随机行为和无限循环
random behavior and infinite looping in arm cortex m4
我正在尝试编写代码以从 uart 获取一些值作为占空比并将它们写入 pwm 输出以驱动 6 个电机。
PWM_Init();
UART_Init();
char x;
uint32_t y;
uint32_t sum[6]={0,0,0,0,0,0};
uint32_t i,j,k;
while(1)
{
for(k = 0 ; k < 7 ; k++)
{
sum[k] = 0;
}
////////////////
for(i=0; i<7; i++)
{
for(j = 0 ; j < 3 ; j++)
{
x = UART_InChar();
y = (x -'0') * pow(10,2-(j));
sum[i] += y;
}
}
//////////////////
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,5000 - sum[0]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_1,5000 - sum[1]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,5000 - sum[2]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5,5000 - sum[3]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,5000 - sum[4]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_7,5000 - sum[5]);
}
在调试第二个 for 循环时超过 7 并继续 运行 有时 i 值很大,甚至可能是无穷大。我不知道这是什么原因以及如何解决这个问题。
我正在尝试编写代码以从 uart 获取一些值作为占空比并将它们写入 pwm 输出以驱动 6 个电机。
PWM_Init();
UART_Init();
char x;
uint32_t y;
uint32_t sum[6]={0,0,0,0,0,0};
uint32_t i,j,k;
while(1)
{
for(k = 0 ; k < 7 ; k++)
{
sum[k] = 0;
}
////////////////
for(i=0; i<7; i++)
{
for(j = 0 ; j < 3 ; j++)
{
x = UART_InChar();
y = (x -'0') * pow(10,2-(j));
sum[i] += y;
}
}
//////////////////
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_0,5000 - sum[0]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_1,5000 - sum[1]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_2,5000 - sum[2]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5,5000 - sum[3]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6,5000 - sum[4]);
PWMPulseWidthSet(PWM1_BASE, PWM_OUT_7,5000 - sum[5]);
}
在调试第二个 for 循环时超过 7 并继续 运行 有时 i 值很大,甚至可能是无穷大。我不知道这是什么原因以及如何解决这个问题。