阿甲
发表于 2023-2-7 23:51
L555T_007 发表于 2023-2-7 23:44
其实功能要求就是
上电先各通道和关窗输出自检然后关闭
思路清晰!有点怀疑你就是上次帮我写那个后面被禁言的兄弟!
每一步都说对了
L555T_007
发表于 2023-2-8 00:09
if(flag倒车)
(
pd=0x00; //倒车[关]
)
else if(flag左)
(
pc=0xa0;// 左,
)
else if(flag右)
(
pc=0x90;// 右
)
else
(
pc=table[idxSel];
)
idxSel就是按键切换选择,每次按下++ 循环 0-4
你要做好按键和各输入的去抖处理,查询法即可无需各路中断。
捱多年
发表于 2023-2-8 15:14
不是esp32无法验证有心无力,延时函数会被编译器优化,中断不能用延时会重复进中断甚至锁死
捱多年
发表于 2023-2-8 15:16
其实网上就有按键处理的例程何必自己那么辛苦想?
阿甲
发表于 2023-2-8 15:30
L555T_007 发表于 2023-2-8 00:09
if(flag倒车)
(
pd=0x00; //倒车[关]
您这个我要慢慢消化,有点超出目前的学习了。比如变量定义这些,有时间的话全部帮我写下嘛,不同方式学习,我觉得我这种毫无基础的人学一点都高兴
阿甲
发表于 2023-2-8 15:32
捱多年 发表于 2023-2-8 15:16
其实网上就有按键处理的例程何必自己那么辛苦想?
按键其实我会一点了啊,现在问题是中断返回,以及重复触发(确实需要重复触发)的问题以及中断中延迟的问题
阿甲
发表于 2023-2-8 15:35
捱多年 发表于 2023-2-8 15:14
不是esp32无法验证有心无力,延时函数会被编译器优化,中断不能用延时会重复进中断甚至锁死 ...
是有这种说法,有人说中断可以只作为一个开关来打开主函数中的一个延时处理,目前还不会这种。您看我现在会的基本上就是一个乒乓开关
捱多年
发表于 2023-2-8 16:43
阿甲 发表于 2023-2-8 15:35
是有这种说法,有人说中断可以只作为一个开关来打开主函数中的一个延时处理,目前还不会这种。您看我现在 ...
先定义个全局变量volatil int keydown=0;
在中断只要keydown=1;其他啥都不要
添加
int readkey()
{
static int key=0;
static int time=0;/进入次数
if(keydown)
{
延时10
读键盘
if(键盘按下){key+=1;time=0;}
keydown=0;
}
if(time<1000)time++;
return key;
}
然后主循环调用readkey()
捱多年
发表于 2023-2-8 16:48
漏了处理key了key+=1那里添加if(key>最大键数)key=1
捱多年
发表于 2023-2-8 16:52
额还得添加个变量应付无键按下的返回值
dqp05
发表于 2023-2-8 19:22
听说 chatgpt AI软件 可以帮人写代码,楼主可以试试