自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 MultiTimer使用及调整

之前在项目上有利用一个硬件定时器,对多端代码执行时间进行测量,于是就去网上寻找一下是否有较为成熟的源码,就看到很多人在讨论MultiTimer,翻看一下代码确实简约高效,于是把它作为项目前后台系统任务添加方式,可以避免变量跨文件,有利于工程管理;3、考虑多个线程时序问题,还要考虑运行时边界问题,由于该代码我仅在初始化使用,暂时不添加;2、因为为满足多个使用场景,修改为面向对象属性,支持定义多个定期系统;1、因为前后台任务均是周期调用,我在原来定时器类增加周期调用属性;

2024-09-16 23:26:12 292

原创 HardFault排查

结合截图的下半部分的代码去看,完全验证了这三个点。参见如下图,当异常产生时,LR 会被更新为异常返回时需要使用的特殊值(EXC_RETURN),其定义如下,其高 28 位置 1,第 0 位到第3位则提供了异常返回机制所需的信息,可见其中第 2 位标示着进入异常前使用的栈是 MSP还是PSP。运行代码,观察打印结果,可以看到打印信息中包含出错的任务名称、出错前的任务压栈的8个通用寄存器名称和内容,从图中可以一目了然的找出出错的PC指针,如果进一步去结合汇编代码可以清晰的看到其能够准确定位到代码出错的位置。

2024-07-02 14:01:54 961

原创 C语言实现简单静态队列操作

鉴于前辈代码使用的队列函数仅对单字节数据结构进行操作,效率、复用性太差,遂完成如下函数,对自定义字节长度的数据结构进行储存操作;

2023-12-05 10:41:32 477 1

原创 C语言简单实现单向链表

链表学习过程记录,实现链表创建、删除、插入等。

2023-11-16 23:35:47 79

原创 MPU6500调试

还记得刚学习单片机,内心兴奋像打开了新世界大门,一股脑买了很多电子垃圾,其中MPU6500就是其中一个。回头看接触单片机也算1年了,现在每天除了完成工作任务能力并没有长进,真是愧对之前的一腔热血,故今日从新学习。

2023-08-04 00:27:38 2309 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 1835

原创 STM32F413库函数GPIO配置

GPIO的端口模式共有四种:输入模式(Input)、输出模式(Output)、复用模式(Alternate function)、模拟输入模式(Analog);

2023-04-22 10:53:09 531 1

空空如也

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

TA关注的人

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