自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (3)
  • 问答 (8)
  • 收藏
  • 关注

原创 程序内存分布分析记录

ZI Data 是指那些在编译时被声明但未显式初始化的全局或静态变量(未被初始化的全局变量、全局静态变量和函数内部定义的静态变量)。*(.rodata) /* .rodata sections (constants, strings, etc.) 常量、字符串等*/*(.rodata*) /* .rodata* sections (constants, strings, etc.) 常量、字符串等*/.data:存放已初始化的全局和静态变量(非 const)。

2024-12-06 18:30:32 260

原创 rt_thread 自动初始化组件分析记录

rt_thread有一个开机不用显示调用函数,可以自动进行初始化函数调用的功能。前提是需要在定义函数处通过INIT_BOARD_EXPORT(fn)、 INIT_PREV_EXPORT(fn)、INIT_DEVICE_EXPORT(fn) 、INIT_COMPONENT_EXPORT(fn)、 INIT_ENV_EXPORT(fn)、INIT_APP_EXPORT(fn) 等宏定义进行声明;原理就是在进行INIT_BOARD_EXPORT(my_test_fun);

2024-12-06 15:54:29 239

原创 RT-Thread 源代码解读之:双向链表数据结构

双向链表是一种数据结构,它是由一系列节点组成的数据集合,每个节点包含三个部分:一个存储数据的元素、一个指向前一个节点的引用(或称为指针)以及一个指向后一个节点的引用。该双向链表结构中只有两个成员变量,一个指向下一个节点的后向指针,和一个指向前一个节点的前向指针,没有其他数据变量,这样可以通过该双向链表结构类型变量作为其他需要构建双向链表的数据对象构建链表。rt_list_t链表结构的几个基本操作:初始化、在当前节点后插入一个节点、在当前节点前插入一个节点、删除一个节点n。在节点l之后插入一个新节点n。

2024-11-23 18:13:06 482

原创 rt_mq_send 发送失败,返回-3 (-RT_EFULL)问题分析及解决

问题描述:通过rt_mq_init函数创建一个消息队列,队列元素个数4,单元素数据size 1 Byte,队列总size 4;rt_mq_init返回创建成功,也未发现有内存不足或异常操作的情况,但是rt_mq_send 返回失败-3 (-RT_EFULL)创建队列时队列buffer的大小(元素大小*元素个数)要满足大于等于8的最低要求。

2024-11-18 11:39:30 274

原创 使用单项链表存储多行字符串数据

在嵌入式软件开发中,涉及到双机通信过程中,接收方有多条数据接收,并要逐条处理的情况,这样就需要先接收,存储到缓存中,然后再从缓存中读取并逐一处理。针对这种场景,通常有两种方式,一是建立一个多维数组,每一纬用于存储一条数据,这种方式比较直观,操作方便,涉及到多维数组的遍历,数组的数据写入和读取等常规操作,缺点是因为是多维数组,在定义时就要确定数组的维数和数组的长度,比如data_list[4][512];数组的维数和长度都要按照实际情况的最大值来设定,这样有可能带来空间上的浪费,为了确保某一条不

2024-11-14 11:11:23 373 1

原创 嵌入式软件设计之:宏、常量

宏替换是简单的代替,要避免替换后运算符的优先级响应本来的用意。

2024-08-14 19:40:12 147

原创 嵌入式软件设计之:变量使用原则

嵌入式软件设计原则之变量

2024-08-13 16:12:01 215

原创 嵌入式软件设计之:标识符与命名规则

1. unix like 风格:单词用小写字母,单词之间用'_'连接。如:driver_led_init();2. windows 风格:单词连在一起,每个单词首字母大写。如:GetMainPwr();像windows系统不区分大小写字母,linux系统区分大小写字母,所以统一使用小写字母命名文件。数值或字符串等常量的定义,采用全大写字母+‘_’的方式。以函数要执行的动作命名,一般用动词或动词+名词的方式。如:get_current_time();文件命名统一采用小写字符。

2024-08-12 19:51:23 389

原创 嵌入式软件设计之:函数设计原则

最佳实践:一个函数代码行不要超过一个屏幕,尽量整屏可以显示全部,避免来回翻页,提高效率。7.对函数的返回值做异常处理,尽早拦截异常情况,避免本行函数调用已经异常,程序还继续往下走。代码控制块 if、for、while、switch 等相互包含的层数不要超过4层。C语言函数设计的基本原则是:整洁、简单、有效、直截了当。5.可重入函数避免使用共享变量,如果需要则要增加互斥锁。1.一个函数只完成一个功能,确保函数功能单一,明确。3.函数长度避免过长,一般不超过50行。4.函数代码控制块嵌套不要超过4层。

2024-07-30 20:04:17 312

原创 嵌入式软件设计之:.h头文件设计原则

嵌入式软件设计中头文件设计原则

2024-07-27 16:31:29 526

原创 git push出错:ERROR: commit fcf5889: missing Change-Id in message footer

git push 代码时 失败,失败现象是提示:remote: ERROR: commit fcf5889: missing Change-Id in message footer。解决方法一:根据出错提示中的操作来进行:(Hint:to automatically insert a Change-Id,install the hook:)解决方法二:ssh 拉代码时使用 Clone with commit-msg hook 的ssh路径;然后重新push 就能成功;

2024-03-27 10:57:49 681 1

原创 rt-thread ENV中的工具包fatdisk工具可以将PC目录转成fatFS文件

rt-thread 码云。

2024-03-21 17:20:38 224

原创 rt-thread take mutex 失败:(rt_object_get_type(&mutex->parent.parent) == RT_Object_Class_Mutex) 问题解决

但是其实程序一开始就初始化了互斥量,说初始化没问题;可能是中间被破坏,所以打开map文件,查看信号量定义的位置,发现该变量的上一个变量是个数组,长度为32,在操作过程存在越界的可能,查看log果然发现在做该数组操作时实参长度大于32,把互斥信号量给踩到了。教训:1.定义数组时数组长度一定要长度合理;2.要做长度检查避免越界,造成严重问题。1.互斥量未初始化;

2024-01-05 14:42:05 1522

原创 c 语言字节对齐相关概念及参考

c 语言字节对齐相关概念及参考

2022-08-04 11:35:56 227

原创 设备上报的GPS 帧里的unix时间戳怎么转换成java.sql.Timestamp 格式?

unix时间戳怎么转换成java.sql.Timestamp 格式?

2022-07-30 15:32:58 293

原创 STM32G0B1 printf 做了重映射,但是会卡死解决

STM32G0B1 printf 做了重映射,但是会卡死解决办法

2022-07-28 09:38:06 732 1

原创 解决STM32G0B1 串口DMA 空闲中断接收数据中途失效问题

解决STM32G0B1 串口空闲中断DMA 串口失效问题 Overrun

2022-07-26 10:49:19 6652 4

原创 亚马逊云AWS MQTTS 证书使用说明

SSL/TLS 双向认证

2022-06-15 10:12:46 843

原创 STM32FXX IAP 功能应用介绍

ST MCU 提供了一个IAP功能,即STM32 in-application programming (IAP),这个程序通过ST 原始方式(比如常见的拉BOOT管脚进BOOT,然后进行升级)烧录至用户代码起始位置(0x8000000),作为第一级用户软件,有了这个第一级用户软件后,可以支持烧录用户第二级用户软件(App)、读取用户第二级软件、跳转执行第二级用户软件,其中烧录用户软件使用的协议是YModem协议。这样开发者开发基于STM32的用户软件时可以将软件分成Boot+App两个部分,Boot

2022-05-20 10:20:01 977

原创 嵌入式物联网软件开发实战系列(STM32+FreeRTOS)

一、使用STM32CubeMx 创建物联网项目软件工程二、STM32CubeMx 配置时钟三、STM32CubeMx 配置GPIO 及 GPIO 相关接口在软件工程中的形式及使用四、STM32CubeMx 配置USART 串口五、USART 串口在物联网项目中的使用之不定长数据接收(DMA+空闲中断方式)六、USART 串口在物联网项目中的设计模式之双机通信七、USART 串口在物联网项目中的使用之 串口调试日志功能(可以日志输出和接收调试指令)八、STM32CubeMx 配置R

2022-03-30 22:13:15 8889

STM32 官方 OpenBootloader IAP 例程; 使用OpenBootloader 做IAP升级示例

STM32 官方 OpenBootloader IAP 例程;支持MDK/EWARM/STM32CubeIDE 打开; 支持OpenBootloader 协议中的所有指令;支持- USART1 、 FDCAN1 、 I2C1 、USB 通信方式实现OpenBootloader;便于STM32 OpenBootloader 的开发使用

2022-05-20

ST32 OpenBL 官方文档:应用笔记(OpenBootloader) 功能详细介绍

该文档是ST32 官方应用笔记pdf,详细介绍了有关STM32 OpenBL 相关的功能、指令、指令交互协议流程;This application note describes the USART protocol used in the STM32 microcontroller bootloader, providing details on each supported command.方便要使用STM32 OpenBL的开发者查阅。

2022-05-20

STM32 IAP 官方应用笔记 AN4657

AN4657 Application note -STM32 in-application programming (IAP) using the USART; 该文档详细介绍了STM32 IAP 功能,对想使用STM32 IAP 功能进行开发在线升级或OTA升级的朋友会非常有用

2022-05-20

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除