不用手动编程!ChatGPT帮你轻松实现单片机按键输入功能

从今年年初,OpenAI发布的ChatGPT已摧古拉朽之势席卷全球,短短两个月注册用户数就超过1亿人,是全世界增长速度最快的应用。很多人都说今年是AI元年,其实也是有一定道理的,之前的AI门槛相对较高,很多人没有机会参与其中,现在门槛几乎降到了零,普通人也可以参与到AI的浪潮中,作为一名嵌入式er,当然也要来试用一下,看看Chatgpt有多神奇,到底能不能解放我们的双手呢!

我准备了一块STM32F429IGT6的开发板,尝试让ChatGPT帮我实现按键输入功能,通过按键来控制不同的LED灯。话不多说,下面就开始让ChatGPT来帮我们编程吧。

1. 向ChatGPT提问

如何向ChatGPT提问非常关键,给出清晰明确详尽的prompt,才能生成质量更高的结果,避免后续调bug的麻烦,下面是我向ChatGPT抛出的Prompt

prompt: 基于HAL库编写按键控制LED灯程序,不需要用STM32CubeMX进行配置GPIO,直接用代码实现。
共有四个按键KEY0、KEY1、KEY2、KEY_UP以及两个LED灯LED0、LED1,要实现的功能是:KEY_UP控制LED0和LED1关闭;KEY2控制LED0,按一下状态翻转一次;KEY1控制LED1,按一下状态翻转一次;KEY0同时控制LED0和LED1,按一下状态翻转一次;用按键扫描的方式实现。
一、引脚的配置要求:

  1. KEY0、KEY1、KEY2、KEY_UP分别对应GPIO引脚PH3、PH2、PC13、PA0
  2. PH3、PH2、PC13引脚设置为输入模式、上拉模式,PA0引脚设置为输入模式、下拉模式
  3. KEY0、KEY1、KEY2、KEY_UP的键值分别定义为1、2、3、4
  4. LED0、LED1分别对应PB0、PB1
  5. PB0、PB1引脚设置为输出模式

二、代码编写的要求:

  1. 按键初始化程序、按键扫描程序要作为独立的模块(key.c)进行编写
  2. 按键扫描函数要添加防抖代码
  3. 不同的按键定义不同的键值
  4. 在主函数中根据不同的键值来判断哪个按键按下,然后实现相应的功能
  5. LED引脚初始化在MX_GPIO_Init()函数中实现

在这里插入图片描述
ChatGPT在一顿疯狂输出后,完成了代码的编写。初步看了一下,代码写得是真不错,但是能不能够实现功能,驱动起单片机的按键输入并按要求控制起LED灯呢?只有把代码拷贝到Keil中,编译下载到开发板中,验证一下才能知道答案了。

2. 拷贝代码

这里使用了STM32CubeMX搭建的基于HAL库的工程模板,因此拷贝上面的代码时,需要有选择性的拷贝。比如HAL库初始化函数、系统时钟配置函数,这些函数在搭建工程时,已经由STM32CubeMX自动生成了,所以无需重复拷贝

  • 添加key.h文件,将ChatGPT生成的按键相关宏定义代码拷贝到文件中

在这里插入图片描述

  • 添加key.c文件,将ChatGPT生成的按键初始化代码和按键扫描代码拷贝到文件中

在这里插入图片描述
在这里插入图片描述

  • main.c文件中,拷贝LED驱动相关的代码

在这里插入图片描述
在这里插入图片描述

  • 将按键控制LED灯的代码,拷贝至主函数while循环中

在这里插入图片描述
编译通过,没有任何报错,先给ChatGPT点个赞!

3. 编译运行

最终的考验来了!将编译好的代码下载到开发板中。重启开发板后,按键被成功的驱动起来了,能够按照描述的不同要求控制LED的组合亮灭,还带按键防抖,相当的丝滑。看下面的视频

不用手动编程!ChatGPT帮你轻松实现单片机按键输入功能

至此,通过ChatGPT生成代码,再结合ctrl+c和ctrl+v ,完全不用手动编程,ChatGPT帮我们轻松实现了单片机按键输入功能,牛!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/57454.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的Python教程:使用Pyecharts画关系节点图

示例源码1 from pyecharts import options as opts from pyecharts.charts import Graphnodes [{"name": "结点1", "symbolSize": 10},{"name": "结点2", "symbolSize": 20},{"name": "结点3&qu…

Java实现Google cloud storage 文件上传,Google oss

storage 控制台位置 创建一个bucket 点进bucket里面,权限配置里,公开访问,在互联网上公开,需要配置角色权限 新增一个访问权限 ,账号这里可以模糊搜索, 角色配置 给allUser配置俩角色就可以出现 在互联…

APT60DQ20BG-ASEMI快恢复二极管APT60DQ20BG

编辑:ll APT60DQ20BG-ASEMI快恢复二极管APT60DQ20BG 型号:APT60DQ20BG 品牌:ASEMI 封装:TO-3P 恢复时间:≤35ns 正向电流:60A 反向耐压:200V 芯片个数:双芯片 引脚数量&…

SQL server 与 MySQL count函数、以及sum、avg 是否包含 为null的值

sql server 与 mysql count 作用一样。 count 计算指定字段出现的个数, 不是计算 null的值 获取表的条数 count(n) n:常数 count(1),count(0)等 count(*) count(字段) 其中字段为null 不会统计在内。 avg(字段)、sum(字段) 跟count(字段)…

cn.hutool.core.date.DateUtil.beginOfDay 方法的作用和使用

cn.hutool.core.date.DateUtil.beginOfDay 方法的作用是返回指定日期的开始时间,即将时、分、秒和毫秒部分设置为 0。 使用 beginOfDay 方法时,可以按照以下步骤进行操作: 导入 cn.hutool.core.date.DateUtil 类。创建一个 java.util.Date …

实现 cpolar 内网穿透

简介 cpolar是一种安全的内网穿透云服务,可以将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务。它是一款内网穿透软件,使用简单,只需一行命令即可将内网站点发布至公网,方便给客户演示…

一篇五分生信临床模型预测文章代码复现——Figure 10.机制及肿瘤免疫浸润(三)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

【数据结构】单链表OJ题

🔥博客主页:小王又困了 📚系列专栏:数据结构 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、移除链表元素 💡方法一: 💡方法二…

用excel格式书写的接口用例执行脚本

创建测试用例和测试结果集文件夹: excel编写的接口测试用例如下: 1 encoding 响应的编码格式。所测项目大部分是utf-8,有一个特殊项目是utf-8-sig 2 params 对应requests的params 3 data,对应requests的data 有些参数是动态的&a…

华为OD机试(含B卷)真题2023 算法分类版,58道20个算法分类,如果距离机考时间不多了,就看这个吧,稳稳的

目录 一、数据结构1、线性表2、优先队列3、滑动窗口4、二叉树5、并查集6、栈 二、算法1、基础算法2、字符串3、图4、动态规划5、数学 三、漫画算法2:小灰的算法进阶参与方式 很多小伙伴问我,华为OD机试算法题太多了,知识点繁杂,如…

Jenkins+Nginx+vue

安装nodejs 在这里插入图片描述 echo off xcopy C:\ProgramData\Jenkins\.jenkins\workspace\super_manage_vue\dist F:\java\www\super_manage_vue\ /s /e /y echo 复制文件完成 exit安装niginx 配置文件如下 #user nobody; worker_processes 1;#error_log logs/error.lo…

IDS详解

1、什么是ids? IDS是入侵检测系统(Intrusion Detection System)的缩写。它是一种安全技术,用于监视计算机网络或系统中的网络流量和活动,以识别潜在的恶意行为或入侵尝试。IDS可以通过分析网络数据包、审查日志…