请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28069M 主题中讨论的其他器件:DRV8305
尊敬的先生:
我使用 基于 lab11e 的 F28069M 和 DRV8305来控制电机、我想 通过按键控制电机的正向和反向旋转。 但是、在我在 lab11e 中添加了以下程序后、它不起作用:
void key_control (void)(空)
{
key_s1 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_1);
key_s2 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_2);
Key_S3 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_3);
{
key_s1 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_1);
key_s2 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_2);
Key_S3 = HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_3);
if (HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_x)==低电平)
{
usDelay (50);
if (HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_x)=低电平)
{
while (HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_x)=低电平);
返回低电平;
}
其他
返回高电平;
}
其他
返回高电平;
{
usDelay (50);
if (HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_x)=低电平)
{
while (HAL_readGpio (halHandle、(GPIO_Number_e) HAL_keyGpio_x)=低电平);
返回低电平;
}
其他
返回高电平;
}
其他
返回高电平;
while (1)
{
if (key_s1==低电平)
{
gMotorVars.SpeedRef_KRPM = 0.8;
}
if (key_s2=low)
{
gMotorVars.SpeedRef_KRPM =-0.8;
}
while (1)
{
if (key_s3=low)
{
gMotorVars.SpeedRef_KRPM = 0.8;
usDelay (500);
gMotorVars.SpeedRef_KRPM =-0.8;
usDelay (500);
}
}
{
if (key_s1==低电平)
{
gMotorVars.SpeedRef_KRPM = 0.8;
}
if (key_s2=low)
{
gMotorVars.SpeedRef_KRPM =-0.8;
}
while (1)
{
if (key_s3=low)
{
gMotorVars.SpeedRef_KRPM = 0.8;
usDelay (500);
gMotorVars.SpeedRef_KRPM =-0.8;
usDelay (500);
}
}
}
}
1、我编写的程序是否有问题? 如何 通过按键控制电机的前进和后退旋转?
2、在哪里可以更改参考速度? 我已将其更改为0 斜坡、但 在表达式窗口中、它仍然 显示1800斜坡。
3、 gHall_GpioData =(~HAL_readGpio (halHandle、(GPIO_Number_e) HAL_HallGpio_C)& 0x1)<< 2;
gHall_GpioData 的结果是什么?