- 博客(9)
- 收藏
- 关注
原创 如何设计一个串口的驱动层和应用层(以GD32F303未例)
在实际工作中,我们常面临根据业务场景快速切换不同类型芯片的实际需求,同时项目周期通常较为紧张。在这样的工程背景下,如何高效编写驱动代码并设计应用框架以实现高内聚低耦合的代码架构,是值得深入探讨的技术课题。接下来,我将结合个人实践经验,以串口驱动开发为例,详细展开说明如何高效完成此类代码编写。
2025-05-01 22:55:20
1006
原创 嵌入式GUI代码优化实践:以密码界面初始化为例
在嵌入式系统开发中,图形用户界面(GUI)的实现往往需要兼顾功能性和资源利用效率。然而,随着功能的增加,代码复杂度也会随之上升,这不仅会影响开发效率,还可能导致代码难以维护。本文将以一个具体的密码界面初始化函数为例,探讨如何通过代码优化提升可读性、可维护性和效率。该结构体总结了大部分控件需要用到的内容,当然后续根据实际需求可以增加。下面来看看初始化函数,
2025-02-17 22:34:47
445
原创 AI比我写的好太多了
然后每100ms调用一次,Timer递减到0时,关闭蜂鸣器,pCtrl移动到下一个元素5,设置Timer为5,关闭蜂鸣器,再下一个5,开启,依此类推。比如,最后一个元素是0,表示结束。现在,针对BUZZER_STATE_CARD_DETECTED的情况,原代码中的pCtrl指向了BUZZER_CTRL_KEY,而BUZZER_CTRL_KEY数组是{1,0},而注释里说BUZZER_STATE_CARD_DETECTED应该对应BUZZER_CTRL_CARD_DETECTED数组,即{3,3,0}。
2025-02-09 15:01:21
502
原创 函数指针声明与函数声明的区别
如果你需要定义一个返回指针的函数(例如,一个工厂函数或任何返回动态分配内存的函数),你应该使用第二个声明。需要程序员自己确保返回的指针类型与后续使用它的代码中的期望类型相匹配,并进行适当的类型转换。这种声明通常用于回调函数,即一个函数指针被传递给另一个函数,以便在特定事件发生时调用。这种声明通常用于返回一个通用指针的函数,这个指针可以指向任何类型的数据。第一个声明是一个指向函数的指针,用于回调函数的场景。第二个声明是一个函数,它返回一个指向任意类型的指针。是一个指针,它指向一个函数。
2025-01-22 09:01:02
136
原创 单片机中各类变量存储区域
在单片机中,申请的变量通常存放在内存中,具体存放位置取决于变量的类型、作用域以及存储方式。单片机的内存主要分为数据存储器(RAM)和程序存储器(ROM)两部分。
2024-12-06 16:07:23
1952
原创 关于IAP和APP的个人理解
当然,目前的IAP升级方式比较多,各人也有各人的看法,对于我自己来说,主要的升级方式就是CAN去升级,第一个原因是在车载行业,CAN两条线是必须引出来收发数据的,这样就不会再占用外部引脚,第二个CAN只需要CAN_H和CAN_L两条线,这也为我去客户那调试提供了不少方便,甚至我们公司自己做了CAN升级器,寄给客户,有时候发个bin文件过去就可以了。初始化完成之后我们可以进入IAP流程中了,既然是IAP,那就需要一个接收函数去接收上位机发送的升级命令,我使用的是CAN升级,所以是CAN的接收解析函数。
2024-11-27 09:34:13
774
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人