按键检测,在常见的设备中,再普遍不过了。最开始,我是用状态机的方式消抖+判断。
后来,了解到某个开源的小组件:multi-button,支持单击、双击、长按的检测,挺好用,我就一直用了下来。
毕竟,设计过程中,要尽量避免重复造轮子。
不过这次,我想试试用AI实现类似的功能,效果如何。
首先是硬件的准备,之前做的一个STM32的板子,其中PA3、PA4外接了两个按键:
然后是工程模板的准备,我在STM32CUBEMX中,配置了那两个IO为上拉,打开串口(方便打印信息)。配置了一个定时器,20ms中断一次,方便定时扫描。

模板里面,还把串口重定向的操作也弄好了。
第三步,打开TRAE国内版,说清楚我的需求:

说清楚我提供的模板有什么配置,然后说清楚我的需求。我现在有个习惯,不会让它一上来就写代码。
我是让它先考虑方案,确认方案没问题,再开始coding。
果然,分析了两三轮,确认了一些问题。可以开始干活了:

第四步,它写代码,我去练习单杠。
三分钟左右,写完了,我编译了一下,报错。小问题,修改,再编译,可以了。

意料之内,一次完成!效果几乎一模一样,莫非?
我把multi-button的文件添加到工作区,让AI对比它写的函数和multi-button的函数。

我真是小人之心啊,还以为AI抄的multi-button,没想到真的是自己写的。它还系统分析了两者实现的技术路线和优缺点,内容太多,就不全放进来了。
回到开头说的那句话,设计过程中,尽量避免重复造轮子。但是AI工具的普及,让我们在面对一些基础但繁琐的功能时,不再想着找个轮子。所以,可能会出现大量重复、类似功能的轮子,换句话说,轮子的上限会被提高。
毕竟,有AI了,谁还会找一些简单的轮子呢!
我是单片机爱好者-MCU起航,打完收工!