我用chatGPT产生了一个STM32协议解析的程序,实锤了chatGPT最先淘汰的行业是程序员!

原创 玩转单片机与嵌入式 2023-09-05 07:01

点击下方名片,关注公众号,获取更多精彩内容

欢迎关注【玩转单片机与嵌入式】公众号,回复关键字获取更多免费视频和资料

回复【加群】,单片机】、【STM32】、【硬件知识】、【硬件设计】、【经典电路】、【论文】、【毕业设计】、【3D封装库】、PCB】、电容】、TVS】、阻抗匹配】、【资料】、【终端电阻】、【Keil】、【485】、【CAN】、【振荡器】、[USBCAN]、【PCB】、【智能手环】、【智能家居】、【智能小车】、【555】、【I2C】、【华为】、【中兴】,等……

随着chatGPT的火爆,在网上纷纷讨论最先被chatGPT淘汰的会是什么行业,其中类似小编的“程序员”赫然在列,并且排名前三。

起初,小编不信邪,我们是编写出AI程序的人员,怎么可能会被AI淘汰。最近,当我尝试让chatGPT编写一段协议解析的代码时,彻底被震惊到!

一:第一次命令输入

当我向chatGPT输入我的协议格式时,chatGPT直接根据我的要求输出了完成的源代码。

下面将源码贴上
#include "stm32f4xx_hal.h"
#define PACKET_START_BYTE 0x7E#define PACKET_END_BYTE 0x7E#define MAX_PACKET_SIZE 20 // 最大数据包大小,根据实际情况调整
typedef struct { uint8_t device_address; uint8_t command; uint8_t data_length; uint8_t data[MAX_PACKET_SIZE]; uint8_t checksum; uint8_t is_valid;} SerialPacket;
SerialPacket received_packet;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { static uint8_t buffer[MAX_PACKET_SIZE]; static uint8_t buffer_index = 0; static uint8_t is_inside_packet = 0;
if (huart == &huart2) { if (!is_inside_packet) { if (buffer_index == 0 && received_byte == PACKET_START_BYTE) { is_inside_packet = 1; buffer[buffer_index++] = received_byte; } } else { buffer[buffer_index++] = received_byte;
if (buffer_index >= 4) { uint8_t data_length = buffer[3] - 2; // 计算数据区长度(不包括校验和和包尾)
if (buffer_index == (data_length + 6)) { // 收到完整的数据包 received_packet.device_address = buffer[1]; received_packet.command = buffer[2]; received_packet.data_length = data_length;
for (int i = 0; i < data_length; i++) { received_packet.data[i] = buffer[4 + i]; }
received_packet.checksum = buffer[data_length + 4]; received_packet.is_valid = 1;
// 处理接收到的数据包,例如执行相应的命令 // ...
// 复位接收缓冲区和状态 buffer_index = 0; is_inside_packet = 0; } } }
HAL_UART_Receive_IT(&huart2, &received_byte, 1); // 启动下一次接收中断 }}
int main(void) { // 初始化HAL库和串口2 HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init();
// 启动接收中断 HAL_UART_Receive_IT(&huart2, &received_byte, 1);
while (1) { // 在这里可以执行其他任务 // ... }}
通过上面的代码分析可以发现,当我仅仅经过一次“命令输入”,chatGPT竟然产生了如此准确的协议解析的代码。震惊小编的位置主要是:
1、竟然将协议头、数据长度等内容使用宏定义的形式体现:一般的初级程序员没有如此良好的编程习惯,将常量定义为易读和已改的宏定义。
#define PACKET_START_BYTE 0x7E#define PACKET_END_BYTE   0x7E#define MAX_PACKET_SIZE   20 // 最大数据包大小,根据实际情况调整
2、整个编码解析的过程,符合我的要求。并且函数中使用了结构体、指针等初级程序员不喜欢使用的元素。

二:第二次命令输入

小编对chatGPT进行再次重新输入命令后的调整;chatGPT输出了我们

#include "stm32f4xx_hal.h"
#define PACKET_START_BYTE 0x7E#define PACKET_END_BYTE 0x7E#define MAX_PACKET_SIZE 20 // 最大数据包大小,根据实际情况调整
UART_HandleTypeDef huart2;
typedef struct { uint8_t device_address; uint8_t command; uint8_t data_length; uint8_t data[MAX_PACKET_SIZE]; uint8_t checksum; uint8_t is_valid;} SerialPacket;
SerialPacket received_packet;
// 接收缓冲区uint8_t rx_buffer[MAX_PACKET_SIZE];uint8_t rx_buffer_index = 0;uint8_t is_inside_packet = 0;
void process_received_data() { // 在这里可以解析和处理接收到的数据包 // 访问 received_packet 中的数据进行解析 // 例如,你可以根据 received_packet.command 执行相应的操作 // ...
// 清除接收缓冲区,准备接收下一个数据包 memset(rx_buffer, 0, sizeof(rx_buffer)); rx_buffer_index = 0; is_inside_packet = 0;}
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { if (huart == &huart2) { if (!is_inside_packet) { if (rx_buffer_index == 0 && rx_buffer[0] == PACKET_START_BYTE) { is_inside_packet = 1; } } else { rx_buffer[rx_buffer_index++] = received_byte;
if (rx_buffer_index >= 4) { uint8_t data_length = rx_buffer[3] - 2; // 计算数据区长度(不包括校验和和包尾)
if (rx_buffer_index == (data_length + 6)) { // 收到完整的数据包 received_packet.device_address = rx_buffer[1]; received_packet.command = rx_buffer[2]; received_packet.data_length = data_length;
for (int i = 0; i < data_length; i++) { received_packet.data[i] = rx_buffer[4 + i]; }
received_packet.checksum = rx_buffer[data_length + 4]; received_packet.is_valid = 1;
process_received_data(); // 处理接收到的数据包
// 启动下一次接收中断 HAL_UART_Receive_IT(&huart2, rx_buffer, 1); } } } }}
int main(void) { // 初始化HAL库和串口2 HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART2_UART_Init();
// 启动接收中断 HAL_UART_Receive_IT(&huart2, rx_buffer, 1);
while (1) { // 在这里可以执行其他任务 // ... }}
经过第二次的调整,已经产生了满足我的要求的源代码文件。

三:总结及应对挑战

经过两次短暂的输入,chatGPT即产生了“初级程序员”所具备的能力编写的代码。当随着我们命令的更深层次的输入,chatGPT肯定会产生更符合我们要求的内容/代码。
作为嵌入式工程师,ChatGPT的强大功能可能对我们构成潜在竞争和挑战。
为应对这种竞争和挑战,我们需要采取各类措施来应对挑战:如下的内容也是chatGPT告诉我们的:

其中一条:持续学习和更新技能,在任何时代、任何领域都是保持自身竞争力的手段之一。比如关注小编的公众号,一起学习、一起成长。比如加入小编的微信及技术交流群,与高手一起学习。

END

扫描上方二维码加群,回复【加群】或扫码加我好友,限时免费进入技术交流群。



推荐阅读




【专辑】器件选型


【专辑】单片机


【专辑】经验分享


【专辑】STM32


【专辑】硬件设计


【专辑】软件设计


【专辑】开源项目


【专辑】职业发展

感谢大家阅读,如果喜欢

请点赞和“在看”吧,或者分享到朋友圈。

点击跳转到原文,限时优惠加入我们的知识星球(加好友获取免费券)

玩转单片机与嵌入式 专注单片机、嵌入式、学习资料、最新设计、案例等。以单片机为起点,带你玩转单片机、嵌入式。
评论 (0)
  • 一、市场背景与竞争优势随着智能家居市场的爆发式增长,消费者对小家电的智能化、交互性需求显著提升。WTVxxx系列语音芯片凭借高性价比、卓越音质与功能集成度,已成为智能小家电领域的核心驱动方案。该系列芯片通过以下优势重塑行业格局:成本优化:集成MCU、语音播报、驱动控制等多功能模块,显著降低硬件成本与开发复杂度;智能化升级:支持语音交互、状态显示与智能控制,契合现代用户对高端体验的追求;快速迭代:兼容主流芯片架构,支持远程更新与硬件扩展,助力产品持续迭代。目前,WTVxxx芯片已广泛应用于扫地机器
    广州唯创电子 2025-04-21 08:32 72浏览
  •   电磁信号模拟系统深度解析   一、系统概述   北京华盛恒辉电磁信号模拟系统作为半实物仿真测试系统,广泛应用于无线通信、军事训练等多领域。它通过软硬件结合,构建逼真电磁信号环境,用于测试电子设备在复杂电磁干扰下的性能表现。   应用案例   目前,已有多个电磁信号模拟系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁信号模拟系统。这些成功案例为电磁信号模拟系统的推广和应用提供了有力支持。   二、系统组成   装备模型库:涵盖雷达、通信设备等各类装备平台及电子装
    华盛恒辉l58ll334744 2025-04-21 10:48 65浏览
  •   电磁环境模拟平台系统全解析   北京华盛恒辉电磁环境模拟平台系统是通过技术手段生成、调控和再现复杂电磁环境的专用设备,广泛应用于通信、电子、航空航天、国防等领域。其核心作用是为设备研发、测试和评估提供可控的电磁环境,验证系统在复杂电磁干扰下的性能与可靠性。   应用案例   目前,已有多个电磁环境模拟平台系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟平台系统。这些成功案例为电磁环境模拟平台系统的推广和应用提供了有力支持。   一、系统构成   信号发生
    华盛恒辉l58ll334744 2025-04-21 09:40 70浏览
  •   智慧华盛恒辉国有单位招标标书查重系统介绍   1、建设国有单位招标标书查重系统的重大意义   (1)保障招标过程的公正性与透明度   在国有单位复杂的招标环境中,标书查重系统犹如一把利剑,精准切割出公平竞争的道路。该系统利用自动化比对与检测技术,快速揭露投标文件中潜藏的相似或重复内容,有效遏制了围标、串标及抄袭等恶劣行为,为招标过程披上了一层公正与透明的外衣。这不仅减少了人为干预的空间,更保障了合法投标人的权益,维护了市场的健康秩序,让每一次招标都成为真正的实力较量。   应用案例
    华盛恒辉l58ll334744 2025-04-20 23:07 71浏览
  •   国有单位科研项目审计管理系统解析   一、系统建设意义   北京华盛恒辉国有单位科研项目审计管理系统对科研项目管理至关重要,其意义贯穿管理效能提升、资金优化配置、科研合规推进等核心环节,深刻影响国家科技战略实施。   应用案例   目前,已有多个国有单位科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润国有单位科研项目审计管理系统。这些成功案例为国有单位科研项目审计管理系统的推广和应用提供了有力支持。   提升科研项目管理质效:作为数字化、智能化管理工
    华盛恒辉l58ll334744 2025-04-20 23:21 56浏览
  • 在智能家居与物联网(IoT)技术快速发展的背景下,语音播报功能已成为烟雾报警器等安防设备提升用户体验的核心技术之一。厂家凭借其WTV、WTN、WT588F及WT2605C系列语音芯片,推出了三大烟雾报警器语音方案,覆盖传统、高集成度与智能化需求,为不同场景提供灵活选择。以下从技术特性、应用场景及行业价值三方面展开分析。一、方案对比与技术特性 方案类型核心芯片型号技术优势局限性适用场景传统分立方案WTN6/WT588F/WTV系列音质纯净,模块化设计便于维护;兼容性强,支持外接功放优化音
    广州唯创电子 2025-04-21 08:53 87浏览
  •   战略仿真推演系统设计方案   一、系统概述   1.1 系统定位   北京华盛恒辉战略仿真推演系统是面向政府、企业及军事机构的决策支持工具。它通过搭建虚拟环境,模拟真实战略场景,助力用户评估不同策略的潜在影响,优化决策流程,提升战略规划的科学性与前瞻性。   应用案例   目前,已有多个战略仿真推演系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演系统。这些成功案例为战略仿真推演系统的推广和应用提供了有力支持。   二、系统架构设计   2.1 总体架
    华盛恒辉l58ll334744 2025-04-20 16:27 56浏览
  •   战略仿真推演平台是一种基于计算机技术和仿真模型构建的决策支持系统,旨在通过模拟复杂战略环境,帮助决策者评估不同战略方案的效果、预测潜在风险并优化决策过程。此类平台广泛应用于军事、经济、能源、城市规划等领域,为高层决策提供科学依据。   应用案例   目前,已有多个战略仿真推演平台在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润战略仿真推演平台。这些成功案例为战略仿真推演平台的推广和应用提供了有力支持。   一、核心功能   多维度战略建模   动态推演与情景分析   
    华盛恒辉l58ll334744 2025-04-20 16:16 59浏览
  • 85RC16是一款铁电存储器(FRAM),具有低功耗、高耐久性、快速写入等优点。通过芯片文档,可以看到对比常用的eeprom它的一些优势与24C16的对比读写速度 :85RC16的读写速度更快,可达到与I2C总线速率相匹配的水平,没有像24C16那样的写操作延迟和页写限制,能够实现真正的随机字节写入,且不需要等待写周期完成,适合需要频繁、快速读写的应用场合。写入耐久性 :85RC16的写入耐久性更高,可承受的写入次数远超24C16,这使得其在需要频繁更新数据的应用中更具优势,使用寿命更长。功耗
    小手凉凉 2025-04-21 10:17 56浏览
  •   智慧华盛恒辉国有单位科研项目审计管理系统介绍   1、建设国有单位科研项目审计管理系统的重大意义   其深远意义体现在科研项目管理的核心环节,不仅关乎管理效能与成果质量的飞跃,还深刻影响着科研资金的优化配置、科研行为的规范性以及国家科技发展战略的顺利推进。   应用案例   目前,已有多个科研项目审计管理系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润科研项目审计管理系统。这些成功案例为科研项目审计管理系统的推广和应用提供了有力支持。   (1)强化科研项目管理的效
    华盛恒辉l58ll334744 2025-04-20 22:54 53浏览
  •   电磁环境模拟软件系统深度解读   北京华盛恒辉电磁环境模拟软件系统是专业的技术工具,可生成、捕捉与分析电磁信号,为电气和电子设备搭建仿真测试环境。以下从功能、技术特性、应用场景、主流软件及发展趋势展开介绍。   应用案例   目前,已有多个电磁环境模拟软件系统在实际应用中取得了显著成效。例如,北京华盛恒辉和北京五木恒润电磁环境模拟软件系统。这些成功案例为电磁环境模拟软件系统的推广和应用提供了有力支持。   一、核心功能   电磁环境模拟   信号生成与处理   场景构建与仿真
    华盛恒辉l58ll334744 2025-04-21 10:21 66浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦