huatlwangl
发表于 2024-10-16 10:09:11
梁工 发表于 2024-10-16 09:50
按键按下(边沿检测),检测到一次按下,就算你按季个小时,都是只检测到一次按下的动作,这是按键检测最 ...
梁工,您说的是这个意思吗?
if (up == 1)
{
up_no_press_number ++;
if(up_no_press_number>=4)
{
if(up == 0)
{
up_press_number++
if(up_press_number >= 4)flag_up = 0;
}
}
else
{
up_press_number++;
if(up_press_number>=4)
{
if(up == 1)
{
up_no_press_number++
if(up_no_press_number >= 4)flag_up = 1;
}
}
}
梁工
发表于 2024-10-16 10:41:49
huatlwangl 发表于 2024-10-16 10:09
梁工,您说的是这个意思吗?
if (up == 1)
{
没有注释看不懂,也没空去猜,按键不需要这么复杂:
每个20~50ms扫描一次,比如P10是按键输入,按下低电平,不按为高电平:
bit B_KeyStateTmp, B_KeyState;
B_KeyStateTmp = B_KeyState;//暂存上次键状态
B_KeyState = ~P10; //保存本次键状态(取反为正逻辑,按下为高,不按为低)
if(!B_KeyStateTmp && B_KeyState) //键按下检测
{
//启动电机正转90度
}
if(B_KeyStateTmp && !B_KeyState) //键释放检测
{
//启动电机反转之前正转的脉冲数,如果正在正转,先停止电机,延时几十ms再启动反转
}
huatlwangl
发表于 2024-10-16 11:30:17
梁工 发表于 2024-10-16 10:41
没有注释看不懂,也没空去猜,按键不需要这么复杂:
每个20~50ms扫描一次,比如P10是按键输入,按下低电 ...
感谢梁工指导,我是这样更改的,最终代码和效果如下:(仍然存在转动一圈后不停下,继续转动,且转动步数不一致的情况)
void Key_scan()
{
B_KeyStateTmp = B_KeyState;//暂存上次键状态
B_KeyState = ~up; //保存本次键状态(取反为正逻辑,按下为高,不按为低)
if(!B_KeyStateTmp && B_KeyState) //键按下检测
{
flag_up = 0;//启动电机正转90度
}
if(B_KeyStateTmp && !B_KeyState) //键释放检测
{
flag_up = 1;//启动电机反转之前正转的脉冲数,如果正在正转,先停止电机,延时几十ms再启动反转
}
}
void timer0_ISR(void) interrupt TIMER0_VECTOR
{
B_1ms = 1; //标志1ms时隙
ms_flag++;
if(ms_flag>=20)
{
ms_flag = 0;
Key_scan();
}
}
if((flag_up == 0)&&(flag_down == 1)&&(flag_slow_down == 1)) //正转
{
Flag_jushengState=1;//进入举升标志位=1进入举升=0举升回转结束
if(!B_M1_RunEn) f1 = 200;
B_M1_DIR = 0;
f1_set = 65000;
M1_PulseCnt = 12800;
RunMotor1();
}
huatlwangl
发表于 2024-10-16 15:24:06
梁工,感谢您的指导,终于成功了
huatlwangl
发表于 2024-10-16 15:28:20
huatlwangl 发表于 2024-10-16 15:24
梁工,感谢您的指导,终于成功了
自己犯了很低级的错误,想想就搞笑
Wddz
发表于 2024-10-17 08:48:15
huatlwangl 发表于 2024-10-16 15:28
自己犯了很低级的错误,想想就搞笑
什么错误
huatlwangl
发表于 2024-10-17 11:16:46
Wddz 发表于 2024-10-17 08:48
什么错误
梁工说的重复检测
huatlwangl
发表于 2024-10-17 11:25:34
梁工 发表于 2024-10-16 10:41
没有注释看不懂,也没空去猜,按键不需要这么复杂:
每个20~50ms扫描一次,比如P10是按键输入,按下低电 ...
梁工,请教下如何更改4个PWM通道的周期
梁工
发表于 2024-10-17 12:01:11
huatlwangl 发表于 2024-10-17 11:25
梁工,请教下如何更改4个PWM通道的周期
这么明显的注释。。。。
huatlwangl
发表于 2024-10-17 14:35:08
梁工 发表于 2024-10-17 12:01
这么明显的注释。。。。
梁工,因为我第一次接触,在您的指导下,艰难完成了这个控制。我的意思是,我看您给的例程只设置了一个通道的占空比,其他三个通道都为零吗?2.这个目标频率值得什么频率?是步进电机转的频率还是发脉冲的频率?