0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如果让ChatGPT来写代码他会怎么写?

嵌入式悦翔园 来源:嵌入式悦翔园 2023-03-01 10:15 次阅读

一、前言

今天突发奇想想试一下如果让ChatGPT来写51代码会怎么样呢?今天我们就一起来看一下他会怎么写51代码,机器人写出来的代码到底可不可以运行?

在开始之前我们首先让ChatGPT做一个自我介绍吧!

问: ChatGPT介绍一下自己吧!

答: 当然,我很乐意介绍自己!我是ChatGPT,是一款基于人工智能技术的自然语言处理模型,由OpenAI公司开发。我的全称是"Conversational Generative Pre-trained Transformer",简称"GPT",目前最新的版本是GPT-3。

我使用深度学习技术,通过大量的自然语言文本数据进行训练,可以根据输入的问题或任务,生成符合语法和语义规则的自然语言回答或文本。我能够回答各种各样的问题,从科技和历史到文化和艺术,从日常生活到工作学习等方方面面。此外,我还可以用于自然语言处理、智能客服、机器翻译、文本摘要、情感分析等多种应用领域。

总之,我是一款强大的人工智能语言模型,可以为人们提供丰富的知识和智能服务。

二、让他写个点灯程序

问: 帮我用C语言写个51单片机的点灯程序吧!

答: 当然可以,以下是一个简单的51单片机的点灯程序,让LED灯每隔500毫秒闪烁一次:

#include

sbitLED=P1^0;//定义P1.0口为LED灯的控制引脚

voidmain(){
while(1){//循环执行
LED=0;//将P1.0口输出0,LED亮起来
delay(500);//延时500毫秒
LED=1;//将P1.0口输出1,LED熄灭
delay(500);//延时500毫秒
}
}

//延时函数,延时时间以毫秒为单位
voiddelay(unsignedinttime){
unsignedinti,j;
for(i=0;ifor(j=0;j<125;j++);
}

这个程序定义了P1.0口为LED灯的控制引脚,并且使用了一个循环来不断切换LED灯的状态,从而实现LED灯每隔500毫秒闪烁一次。同时,程序中还定义了一个延时函数,用来控制每个状态的持续时间。

你可以把这个程序下载到你的51单片机上运行,即可看到LED灯每隔500毫秒闪烁一次。如果你想改变LED灯的闪烁频率,可以调整delay()函数中的延时时间。

从上面的分析可以看出ChatGPT写出来的代码居然还有注释,这点对于初学者是非常友好的,而且他写的代码是非常合理和正确的,如果让我写我可能写出来的和他差不多。

那如果让他写一个难点的串口程序会怎么样呢?下面我们一起来问一下它!

三、写个串口代码

问: 帮我用C语言写个51单片机的串口程序吧!

答: 以下是一个简单的51单片机串口程序示例,通过串口将数据发送到电脑端,并且接收电脑端发送的数据并输出到单片机的P2口,你可以参考这个程序进行学习和实验。

#include//引入51单片机头文件
#include

#defineFOSC11059200UL//系统晶振频率,单位为Hz
#defineBAUD9600//串口波特率

unsignedcharReceiveData;//串口接收到的数据

/*初始化串口*/
voidInitSerial(){
TMOD|=0x20;//设置为自动重装定时器1工作模式
TH1=TL1=256-FOSC/12/32/BAUD;//计算波特率重载值
PCON&=0x7F;//波特率不加倍
SCON=0x50;//串口模式1,REN=1,允许串口接收
TR1=1;//启动定时器1
EA=ES=1;//开启总中断和串口中断
}

/*串口发送数据*/
voidSendByte(unsignedchardat){
SBUF=dat;//将数据写入串口发送缓存
while(!TI);//等待发送完成
TI=0;//清除发送完成标志
}

/*串口接收中断处理函数*/
voidReceiveInterrupt()interrupt4{
if(RI){//判断是否接收到数据
ReceiveData=SBUF;//读取串口接收缓存中的数据
RI=0;//清除接收中断标志
P2=ReceiveData;//输出接收到的数据
}
}

voidmain(){
InitSerial();//初始化串口
while(1){
SendByte('H');//发送字符'H'
SendByte('i');//发送字符'i'
SendByte(0x0d);//发送回车符
SendByte(0x0a);//发送换行符
DelayMs(1000);//延时1秒
}
}

这个程序的功能是每隔一秒钟通过串口发送"H "字符,同时通过串口接收电脑端发送的数据并输出到单片机的P2口上。你需要注意的是,这个程序只是一个简单的示例,如果你想要进行更复杂的操作,需要根据自己的需求进行修改。

我们看到他写的代码只封装了一个发送单个字符的函数,那他可不可以给我们封装出来一个能够发送字符串的

当然可以,下面是一个简单的示例:

voidsend_string(char*str){
while(*str){
SBUF=*str++;
while(TI==0);
TI=0;
}
}

这个函数的参数是一个字符串指针,然后它使用串口发送这个字符串中的每个字符。每发送一个字符后,函数会等待串口发送完成,然后才会继续发送下一个字符,以确保每个字符都能被正确发送。

整体来说他写的代码还是非常不错的,但是我试了一下,上面的代码是可以编译和运行的。

下面难度升级,让他帮忙写个Linux驱动试试!

四、写个GPIO的Linux驱动

问: 可以帮我写一个Linux环境下的控制GPIO的驱动和应用程序吗?

答: 当然可以。以下是一个基本的GPIO驱动程序和应用程序,它们可以在Linux环境下使用。

首先是GPIO驱动程序的代码,它使用了Linux内核提供的GPIO子系统:

#include
#include
#include
#include
#include
#include

MODULE_LICENSE("GPL");
MODULE_AUTHOR("YourName");

#defineGPIO_LED17
#defineGPIO_BUTTON27

staticirqreturn_tbutton_isr(intirq,void*data){
printk(KERN_INFO"Buttonpressed!
");
gpio_set_value(GPIO_LED,1);
mdelay(500);
gpio_set_value(GPIO_LED,0);
returnIRQ_HANDLED;
}

staticint__initgpio_init(void){
intret=0;
if(!gpio_is_valid(GPIO_LED)||!gpio_is_valid(GPIO_BUTTON)){
printk(KERN_INFO"InvalidGPIO!
");
return-ENODEV;
}
gpio_request(GPIO_LED,"led");
gpio_direction_output(GPIO_LED,0);
gpio_request(GPIO_BUTTON,"button");
gpio_direction_input(GPIO_BUTTON);
ret=gpio_request_one(GPIO_BUTTON,GPIOF_IN,"button");
if(ret< 0){
printk(KERN_INFO"FailedtorequestGPIObutton
");
returnret;
}
ret=request_irq(gpio_to_irq(GPIO_BUTTON),button_isr,IRQF_TRIGGER_FALLING,"button_irq",NULL);
if(ret< 0){
printk(KERN_INFO"FailedtorequestIRQforGPIObutton
");
returnret;
}
printk(KERN_INFO"GPIOmoduleloaded
");
return0;
}

staticvoid__exitgpio_exit(void){
gpio_set_value(GPIO_LED,0);
free_irq(gpio_to_irq(GPIO_BUTTON),NULL);
gpio_free(GPIO_LED);
gpio_free(GPIO_BUTTON);
printk(KERN_INFO"GPIOmoduleunloaded
");
}

module_init(gpio_init);
module_exit(gpio_exit);

这个驱动程序注册了一个GPIO中断处理函数,在GPIO_BUTTON引脚触发下降沿时执行。当中断处理函数被调用时,它会打印一条消息并控制GPIO_LED引脚来实现一个简单的闪烁效果。

下面是一个简单的GPIO应用程序,它可以通过命令行参数控制GPIO的状态:

#include
#include
#include
#include

#defineGPIO_LED17

voidusage(){
printf("Usage:gpio
");
}

intmain(intargc,char*argv[]){
intfd;
if(argc< 2){
usage();
return1;
}
fd=open("/sys/class/gpio/export",O_WRONLY);
if(fd< 0){
perror("FailedtoexportGPIO");
return1;
}
write(fd,"17",2);
close(fd);
fd=open("/sys/class/gpio/gpio17/direction",O_WRONLY);
if(fd< 0){
perror("FailedtosetGPIOdirection");
return1;
}
write(fd,"out",3);
close(fd);
fd=open("/sys/class/gpio/gpio17/value",O_WRONLY);
if(fd< 0){
perror("Failedto

下面是ChatGPT对于上面程序的分析:

当你在Linux系统中运行该代码时,应用程序将会调用对应的设备驱动程序,该驱动程序将会初始化GPIO的操作,即对GPIO进行初始化配置,包括设置GPIO的输入输出模式、设置引脚方向、设置电平等。当应用程序需要控制GPIO时,会向驱动程序发送相应的指令,例如打开GPIO输出、关闭GPIO输出等指令,驱动程序接收到指令后执行相应的操作,从而控制GPIO的状态。

具体来说,该程序中包含了头文件的引用、设备的打开、ioctl函数的调用以及设备的关闭。头文件的引用包含了一些宏定义和函数声明,它们定义了驱动程序需要使用的一些常量和函数。设备的打开通过open系统调用实现,调用成功后将返回文件描述符。ioctl函数用来发送命令给驱动程序,该函数的第一个参数为文件描述符,第二个参数为命令,第三个参数为可选的数据结构,该函数返回值为执行的结果。设备的关闭通过close系统调用实现,关闭成功后将释放文件描述符。

总体而言,该代码实现了在Linux环境下控制GPIO的基本功能,可作为GPIO驱动程序的模板进行开发。

使用感受

总的来说,我认为ChatGPT的使用感受非常好,可以为用户提供快速便捷的解决问题的方法,并且不需要使用特殊的技巧或知识,但是其中有些回答还是不够拟人话,有些回答过于书面,不过这也能理解,毕竟他还是个机器人嘛!

但是不得不说他相较于其他软件来说还是相当只能的,基本上你问出的问题他都能回答出来。最后再问他一个大家最关心的问题,人工智能会不会取代人类!357dd4aa-b1b9-11ed-bfe3-dac502259ad0.png

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器人
    +关注

    关注

    210

    文章

    28224

    浏览量

    206594
  • 代码
    +关注

    关注

    30

    文章

    4752

    浏览量

    68364
  • ChatGPT
    +关注

    关注

    29

    文章

    1548

    浏览量

    7506

原文标题:如果让ChatGPT来写代码他会怎么写?

文章出处:【微信号:嵌入式悦翔园,微信公众号:嵌入式悦翔园】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ChatGPT一个内核模块

    笔者最近看到这样一篇文章 ,原作者 ChatGPT 一个内核模块,要求实现的功能是:每 5 秒向控制台打印一句 "Hello world",并且把编译需要的 Makefile 也一起写出来。
    发表于 08-17 09:30 430次阅读

    chatGPT帮我硬件代码,是懂行的,好助手!#chatgpt #物联网开发 #python开发板

    ChatGPT
    苏州煜瑛微电子科技有限公司
    发布于 :2023年02月17日 15:27:42

    在IC设计/验证中怎么应用ChatGPT呢?

    好用,那么对于工程师群体应该帮助很大!按照官网的介绍,工程师们完全可以把所要实现的逻辑步骤用自然语言描述清楚,然后ChatGPT翻译出满足相应要求的代码进行实现。话不多说,如图2直接上干货进行测试!图
    发表于 02-21 15:16

    科技大厂竞逐AIGC,中国的ChatGPT在哪?

    ChatGPT“对话”的过程中,人们发现它的“智慧程度”远超其他的人工智能机器人。除了聊天,ChatGPT被网友们用来写文案、翻译文本、为代码纠错,甚至用来编写
    发表于 03-03 14:28

    Python国产库推荐之musicpy:你用代码来写音乐

    你想过用代码来写音乐吗?这里给大家介绍一个国人的库 musicpy,你用简洁的语法通过乐理逻辑写出优美的音乐。 这个库可以你用非常简洁
    的头像 发表于 12-16 11:26 1636次阅读

    如何用AI来写Verilog代码

    可能现在它的功能还并不是很完善,但作为工程师,看到这么强大的功能,不禁有些感慨,我们的核心竞争力是什么?如果真的有一天,AI可以帮我们代码了,我们该去做什么?
    的头像 发表于 12-09 09:45 1731次阅读

    如何利用ChatGPT帮你代码

    最近爆火的ChatGpt相信大家都不陌生,听说它还能写代码,而且能力不凡。作为合格的嵌入式软件工程师,必须得充分利用起来!
    的头像 发表于 12-13 09:55 5.8w次阅读

    ChatGPT抢谁的饭碗?

    帮助你实现机器人对话,解答我们提出的问题,同时支持文字、语音和图片输入,还可以写诗歌,代码,画画。还可以有逻辑的写出一个故事,一篇作文。甚至有外媒报道说89%美国大学生竟用ChatGPT写作业,这是不是意味着很多老师都会被失业
    的头像 发表于 02-08 19:09 2516次阅读

    体验一下ChatGPT带我们代码快感

    OpenAI的ChatGPT是一种自然语言处理技术,它可以帮助开发者快速地完成代码的编写。通过将ChatGPT与Python相结合,开发人员可以利用其先进的自然语言处理功能快速而轻松地开发高质量的
    的头像 发表于 02-14 09:31 1962次阅读

    使用ChatGPT来写python代码

    ChatGPT是时下火热的AI自然语言引擎,啥都知道啥都会,今天咱们就使用ChatGPT一段python代码,模拟一个温湿度传感器,持续的给服务器发数据,并在物联网
    发表于 02-15 09:35 0次下载
    使用<b class='flag-5'>ChatGPT</b><b class='flag-5'>来写</b>python<b class='flag-5'>代码</b>

    ChatGPT取代人类代码

    chatgpt终究只是ai人工智能,它即使学会编程也无法掌握所有程序员的技能和知识,硬要说的话只是影响到一些技术水平较差的程序员。
    的头像 发表于 02-15 16:07 3652次阅读

    如何利用ChatGPT代码

    最近爆火的ChatGpt相信大家都不陌生,听说它还能写代码,而且能力不凡。作为合格的嵌入式软件工程师,必须得充分利用起来!
    的头像 发表于 02-17 15:59 4784次阅读
    如何利用<b class='flag-5'>ChatGPT</b><b class='flag-5'>写</b><b class='flag-5'>代码</b>?

    用AI来写Verilog代码能行吗

    最近ChatGPT大火,成功破圈,到底是什么?怎么使用? 简单说,它是一个模型,一个语言模型! **它是以对话方式与人进行交互的AI语言模型!** 但它能做的事情太多了,可以用它来写一封请假邮件:
    的头像 发表于 05-05 16:02 642次阅读
    用AI<b class='flag-5'>来写</b>Verilog<b class='flag-5'>代码</b>能行吗

    ChatGPT是什么?ChatGPT代码的原理你知道吗

    自己的智能水平,提供更加准确和有用的回答和服务。 ChatGPT代码的原理 ChatGPT是一种基于深度学习模型的自然语言处理技术,其主要原理如下:
    的头像 发表于 06-04 17:01 3159次阅读

    chatGPTMIG控制器

    之前有人发表论文说用chatGPT写了一个MCU 还流片了,一副很腻害的样子,在这个新闻的前几天我就在朋友圈里说了,用chatGPTverilog代码还是有一段距离的。今天我就手把手
    发表于 07-10 09:12 354次阅读
    用<b class='flag-5'>chatGPT</b><b class='flag-5'>写</b>MIG控制器