- 博客(9)
- 收藏
- 关注
原创 嵌入式单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。至于“单元”的大小或范围,并没有一个明确的标准,“单元”可以是一个函数、方法、类、功能模块或者子系统。根据理解来说单元测试没有一个明确的范围,一个函数是一个单元,一个模块也可以是一个单元,等等,每个我们像测试的代码功能都可以是一个"单元";
2024-12-21 16:19:36
1102
原创 MultiTimer使用及调整
之前在项目上有利用一个硬件定时器,对多端代码执行时间进行测量,于是就去网上寻找一下是否有较为成熟的源码,就看到很多人在讨论MultiTimer,翻看一下代码确实简约高效,于是把它作为项目前后台系统任务添加方式,可以避免变量跨文件,有利于工程管理;3、考虑多个线程时序问题,还要考虑运行时边界问题,由于该代码我仅在初始化使用,暂时不添加;2、因为为满足多个使用场景,修改为面向对象属性,支持定义多个定期系统;1、因为前后台任务均是周期调用,我在原来定时器类增加周期调用属性;
2024-09-16 23:26:12
505
原创 HardFault排查
结合截图的下半部分的代码去看,完全验证了这三个点。参见如下图,当异常产生时,LR 会被更新为异常返回时需要使用的特殊值(EXC_RETURN),其定义如下,其高 28 位置 1,第 0 位到第3位则提供了异常返回机制所需的信息,可见其中第 2 位标示着进入异常前使用的栈是 MSP还是PSP。运行代码,观察打印结果,可以看到打印信息中包含出错的任务名称、出错前的任务压栈的8个通用寄存器名称和内容,从图中可以一目了然的找出出错的PC指针,如果进一步去结合汇编代码可以清晰的看到其能够准确定位到代码出错的位置。
2024-07-02 14:01:54
1171
原创 C语言实现简单静态队列操作
鉴于前辈代码使用的队列函数仅对单字节数据结构进行操作,效率、复用性太差,遂完成如下函数,对自定义字节长度的数据结构进行储存操作;
2023-12-05 10:41:32
521
1
原创 MPU6500调试
还记得刚学习单片机,内心兴奋像打开了新世界大门,一股脑买了很多电子垃圾,其中MPU6500就是其中一个。回头看接触单片机也算1年了,现在每天除了完成工作任务能力并没有长进,真是愧对之前的一腔热血,故今日从新学习。
2023-08-04 00:27:38
3620
1
原创 STM32程序卡死HardFault_Handler
(2)在Keil菜单栏点击“View”——“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况,如下图。(1)在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。(2)数组越界:估计应该就是这个原因,因为移植的代码目前还在研发阶段,很大概率是存在问题;
2023-06-08 12:52:08
2005
原创 STM32F413库函数GPIO配置
GPIO的端口模式共有四种:输入模式(Input)、输出模式(Output)、复用模式(Alternate function)、模拟输入模式(Analog);
2023-04-22 10:53:09
619
1
空空如也
CCS安装出现Failed to create the part's controls
2023-05-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人