阿甲 发表于 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软件 可以帮人写代码,楼主可以试试
页: 1 2 [3]
查看完整版本: 请教各位老师,STM8中断执行后不能返回