- 博客(4)
- 收藏
- 关注
原创 【STM32】HardFault问题详细分析及调试
进入异常后链接寄存器 LR 中存放异常返回值 EXC_RETURN, 如果其 bit 2=0 那么用的就是 Main Stack,如果 bit 2=1,那么用的就是 Process Stack。Hard fault (硬错误,也有译为硬件错误的)是在STM32上编写程序中所产生的错误,造成Hard Fault错误的可能原因较多,排除硬件问题,如何在代码量较大的情况下,快速定位造成的hardfault的问题代码,就成为比较关键的问题。在错误的优先级上执行系统服务调用指令(SVC)
2024-12-13 17:29:44
1836
原创 教你一行代码计算结构体元素偏移量,((int) &((type *)0)->member)解析
百度百科中,这样描述"结构体":“结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。结构体通常用来表示类型不同但是又相关的若干数据。结构体类型不是由系统定义好的,而是需要程序设计者自己定义的。C语言提供了关键字Struct来标识所定义的结构体类型。在实际的工程项目中,结构体可以说无处不在,不管在哪种软件框架设计中,都会有它的身影。尤其在模块化的软件设计中,常常需要使用Struct结构描述要抽象的对象。结构体中的确切偏移量。
2024-03-21 09:44:38
752
1
原创 内存对齐三原则简洁懂,终极计算小技巧
原则1:数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在偏移量为0的地方,以后每个数据成员存储的位置的偏移量,要是该成员大小的整数倍(比如int在32位机为4字节,则要从4的整数倍地址开始存储,short是2字节,就要从2的整数倍开始存储)。原则3:收尾工作:结构体的总大小,也就是sizeof的结果,必须是其内部最大成员的整数倍,不足的要补齐。(补:上述取最大成员的大小后,实际上应该取[#pragma pack指定的数值]与[最大成员的数值]比较小的那个为准)
2024-03-12 11:15:20
753
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人