
嵌入式软件开发经验
文章平均质量分 86
大橙子疯
借用一句话来说“代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已”
展开
-
Varint+ZigZag编码和解码
如何对一个字节或多个字节的数据序列化并压缩原创 2023-03-14 08:15:00 · 1133 阅读 · 0 评论 -
开发常使用方式之“柔性数组”
数组长度为0,也叫柔性数组,其主要用途是为了满足需要变长度的结构体原创 2023-02-27 00:00:26 · 465 阅读 · 0 评论 -
程序设计原则-单一职责原则
经典的6大设计原则之一,单一职责原则原创 2023-02-01 21:42:18 · 582 阅读 · 0 评论 -
如何针对时间片论法进行优化
介绍如何基于时间片论法的任务调度模式充分利用MCU的资源原创 2022-12-11 17:58:07 · 1196 阅读 · 3 评论 -
C语言无锁高并发安全环形缓冲队列设计(一)
C语言无锁高并发安全环形缓冲队列设计原创 2022-05-02 21:28:18 · 5262 阅读 · 8 评论 -
单片机 IAP 技术方案设计
关于 IAP 技术多种实现方式的优缺点对比,根据实际场景选择原创 2022-03-26 23:01:23 · 1980 阅读 · 1 评论 -
编程模式-表驱动编程
前言 刚开始编程时,往往会碰到一些根据不同条件执行不同功能的情况,通常都是采用if-else或者switch-case的方式,如果有很多的情况需要区分,则会有很多的 else if 或者case的代码处理,整个功能实现完成后,一看代码可能会有很多的else if 或者 case,为了避免这种情况,本编介绍一种开发方法--表驱动方法。表驱动方法是一种使你可以在表中查找信息,而不必用逻辑语句(if 或 case)来把他们找出来的方法。事实上,任何信息都可以通过表来挑选。在...原创 2022-02-27 12:42:55 · 2539 阅读 · 0 评论 -
STM8 bootloader 升级方案程序设计(一)
1、前言上一篇单片机 IAP 功能基础开发篇之APP升级(一)讲到了单片机 IAP 功能给 APP 程序升级的设计思路,这篇介绍的是具体实现方式。这篇介绍关于 STM8 系列实现 bootloader 功能的部分程序实现方案。以 STM8AF5268 为例,开发环境基于 IAR EW for STM8 3.11.1。2、实现方案这里不介绍具体的升级方式和流程,之前的文章中都提到了。2.1、分区选择首先需要划分 boot 和 app 两个工程的 Flash 区...原创 2022-01-23 11:47:23 · 1869 阅读 · 2 评论 -
嵌入式软件开发之模块消息交互(八)
1、前言 在熟悉 嵌入式软件开发之程序架构(一)、嵌入式软件开发之程序分层(二)和嵌入式软件开发之模块化程序设计(三) 三篇关于软件架构、分层和模块设计后,除了嵌入式软件开发之上下层函数调用(七)中出现的情况外,还会遇到同层模块之前如何进行消息交互,通常是应用层之间。 比如一个设备通过架构设计包含人机交互应用层模块(一般会调用按键和显示屏等功能驱动模块)和通信应用层模块(一般调用串口、CAN和网络ESP8266等功能驱动模块),两个同层之间的模块如果需要互传数据,一般都...原创 2022-01-12 19:00:00 · 2138 阅读 · 7 评论 -
嵌入式软件开发之上下层函数调用(七)
1、前言在熟悉 嵌入式软件开发之程序架构(一) 、嵌入式软件开发之程序分层(二)和嵌入式软件开发之模块化程序设计(三) 三篇关于软件架构、分层和模块设计后,实际开发时会遇到一个问题,部分底层模块需要调用上层应用的函数实现功能,这样就会打乱程序分层中设置的规则(上层允许调用下层接口,但是下层禁止调用上层接口,这是分层的宗旨)。 常见的情况如定时器中断、串口接收中断和按键触发立即响应等,如部分需求场景需要使用精准的定时策略,而即使采用 嵌入式软件开发之程序架构(一)提到...原创 2022-01-11 18:13:07 · 2723 阅读 · 2 评论 -
轻量级多级菜单控制框架程序(C语言)
本文介绍一个降低了耦合性,完全独立的菜单框架原创 2021-11-05 21:37:45 · 14589 阅读 · 32 评论 -
单片机 IAP 功能基础开发篇之APP升级(三)
1、前言上一篇单片机 IAP 功能基础开发篇之APP升级(二)讲到了单片机给 APP 程序升级具体的设计方案,这篇介绍的是升级进阶功能,如何在编译后获取程序的起始地址、结束地址和程序大小等,在指定程序或者变量的位置等。1.1、目的本文所写的是如何不通过下载器的方式实现单片机中的程序更新,目前介绍的是 STM32 的 BootLoader 进阶设计方案。...原创 2021-10-17 14:44:15 · 2345 阅读 · 4 评论 -
C 语言通用模板队列(宏函数)
使用宏定义函数实现 C 语言队列的功能原创 2021-06-28 19:44:42 · 887 阅读 · 0 评论 -
参数模块开发技巧方式
编译期间自动检查(参数)结构体的大小和成员变量的偏移原创 2021-05-17 20:43:28 · 455 阅读 · 5 评论 -
单片机 IAP 功能基础开发篇之APP升级(二)
1、前言上一篇单片机 IAP 功能基础开发篇之APP升级(一)讲到了单片机 IAP 功能给 APP 程序升级的设计思路,这篇介绍的是具体实现方式。1.1、目的本文所写的是如何不通过下载器的方式实现单片机中的程序更新,目前介绍的是 STM32 的设计方案。2、设计方案2.1、升级方式在开发单片机的 bootloader 功能时,首先需要选择通过什么样的方式进行升级,在单片机 IAP 功能基础开发篇之APP升级(一)介绍了三种升级方式,该篇先介绍串口通信升级方式。选定升级方式后,就需原创 2021-05-15 19:43:41 · 4027 阅读 · 10 评论 -
嵌入式软件开发之常用软件(六)
作为一个软件开发人员,除了程序能力素养方面外,还应该熟练地使用各种常用的辅助工具,所谓“工欲善其事,必先利其器”;通过这些工具能提升自己的专业素养,且在工作中选择合适的工具可以起到事半功倍的效果。...原创 2021-01-10 23:12:58 · 8118 阅读 · 7 评论 -
Proteus仿真出现“Internal Exception: access violation in module ‘LOADERS.DLL‘ [00020627].”错误
Proteus仿真问题在使用 Proteus 8.4 进行仿真时, 出现错误提示 Internal Exception: access violation in module 'LOADERS.DLL' [00020627].在写软件进行仿真时,前一刻还能正常运行,后一刻整理了代码后仿真立马出现了该错误,但是编译又是没有任何问题,排查了很久,原来是因为定义了一个结构体时导致的。struct tag { member-list member-list ...原创 2020-11-28 19:16:04 · 15716 阅读 · 0 评论 -
嵌入式软件开发之程序编程规范(五)
代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已。本文所写的是基于嵌入式软件开发之程序编程规范(四)的一些补充,针对于在编写代码时的容易忽略出错的写法、效率和可读性之间的均衡利弊。原创 2020-11-14 01:34:02 · 3523 阅读 · 0 评论 -
嵌入式软件开发之程序编程规范(四)
代码是写给人看的,不是写给机器看的,只是顺便计算机可以执行而已原创 2020-11-08 13:46:47 · 5554 阅读 · 2 评论 -
单片机 IAP 功能进阶开发篇之BOOT升级(一)
主要介绍单片机 IAP 开发的设计思路,如何不使用下载烧录器的方式对单片机的程序进行升级,升级区域包括 bootloader 和用户程序的升级,升级方式有 UASRT 通信、CAN 通信和 OTA 升级。本文目前介绍的是 bootloader 对 Bootloader 程序区升级的开发设计思路。原创 2020-10-17 22:59:30 · 5262 阅读 · 0 评论 -
嵌入式软件开发之模块化程序设计(三)
模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。原创 2020-10-17 21:05:50 · 7913 阅读 · 4 评论 -
单片机 IAP 功能基础开发篇之APP升级(一)
主要介绍单片机 IAP 开发的设计思路,如何不使用下载烧录器的方式对单片机的程序进行升级,升级区域包括 bootloader 和用户程序的升级,升级方式有 UASRT 通信、CAN 通信和 OTA 升级。本文目前介绍的是 bootloader 对用户程序区升级的开发设计思路,称其为 IAP。原创 2020-09-05 02:10:39 · 6633 阅读 · 0 评论 -
嵌入式(单片机)裸机 C 语言开发 + 按键扫描(模块分层/非阻塞式)
本文目的是讲述一个按键扫描处理的面向对象开发的设计思想,适用于裸机开发,通过按键扫描,检测到按键是否按下,松开等状态,并将该状态通过其他形式反馈给其他模块进行处理。初次使用按键时,最常用的办法就是如以下代码一样,硬延时抖动滤波,等待确认后做相应的处理。原创 2019-08-31 18:38:22 · 2681 阅读 · 5 评论 -
STM32 HAL库 USART DMA驱动
本文是在使用 STM32L4 的串口 DMA 功能时,使用 HAL 库出现的一些问题,通过以下方式解决了 HAL 库中存在 DMA 发送和接收的一些问题。DMA 相关配置及使用以下根据 STM32L43xxx 系列进行 USART2 + DMA 的开发。串口配置 sg_USART2_HandleStruct.Instance = USART2; sg_USART2_Han...原创 2019-08-27 19:09:56 · 2843 阅读 · 0 评论 -
嵌入式软件开发之程序分层(二)
在嵌入式软件开发过程中,在程序架构的搭建完成之后,为了提高项目代码的可读性和可维护性等,应对程序代码分层原创 2019-03-03 12:19:11 · 15400 阅读 · 8 评论 -
嵌入式软件开发之程序架构(一)
该内容是工作一年来通过上网或其他方式不断搜索、实践、总结出来的嵌入式软件开发经验(本文仅适用于单片机的裸机开发),希望能帮到正在学习这方面的朋友,如有不好的地方,请多多见谅;在嵌入式软件开发过程中,程序架构的搭建尤为重要,下面介绍三种常用的程序框架设计方案原创 2019-02-17 18:00:41 · 14538 阅读 · 6 评论