手工打断点 修改bin文件,手动打断点。 适合场景: 没有调试器 代码稍微改动现象就不一样,无法定位原因。 想查看程序任意位置的状态 不敢修改代码,怕破坏重要的数据 生成 bin 文件指令: fromelf --bin --output="$L@L.bin" "#L" 使用 STM32 ST-LIN
任务切换时内核干的事情: 保存任务A现场 恢复任务B的现场 任务的现场保存在任务的栈中 无论是FreeRTOS还是RT-Thead,任务控制块中都有一个成员指向任务的栈顶。
沁恒RISC-V芯片RTT中断嵌套Bug 全局变量没有加 volatile 的 bug 首先判断程序有没有跑飞, 跑飞就是程序已经脱离了main函数,到一个错误的地方运行了。 程序对应汇编
栈回溯就是发生Hardfault异常时硬件会自动保存栈帧, 栈回溯的步骤: (1)第一步 根据那个sp地址,在内存中可以找到 PC 在.dis中搜索这个地址,如果找到了,那就找到了出错的位置。 (2)第二步 如果这个PC在dis中找不到,说明被破坏了;还有一种虽然能找到,但是是凑巧的,pc被破坏了,
使用这个函数来模拟数组越界: void buf_overflow(int n, char val) { volatile char buf[5]; volatile int a = 0x55; buf[0] = 0x5a; a++; buf[n] = val;
Cortex-M3/4 关键特点: 哈佛架构 使用 NVIC 管理中断 32 位寻址,支持 4GB 空间。 Thumb-16/32 指令 寄存器 通用寄存器R0-R12 R13:SP R14:LR R15:PC xPSR 状态寄存器
程序编译通过后才能调试,点击调试后会自动下载程序。 不是万能的,就是它会“忽略”标志位啥,我也没弄清楚,调试上能完整执行,但是真实硬件上还是卡死的。 进入/退出调试模式 Keil断点调试技巧-CSDN博客 (1)首先需要连接 ST-Link
MAX30102 的 IRD、RD 这两个引脚是 MAX30102 内部 LED 驱动电流源的输出口,用来给模块上的 红光 / 红外 LED 供电,LED 已经焊在芯片边上,芯片内部已经把 RD、IRD 接到 LED 上了。对用户来说,不需要再接任何外部电路。 就是说,买到的芯片其实里面是有LED的
根据 PCB免费打样规则变更正式实施,新增6层免费,想白嫖板子,必须使用立创 EDA 原生设计,其它软件导入然后修改的无效。 立创 EDA 官方教程:PCB设置 | 嘉立创EDA专业版用户指南 PCB常见问题 | 嘉立创EDA专业版用户指南 免费打样规则: 上
BUCK 、BOOST 都是指,输入恒定,输出变化。 BUCK-BOOST 是输入变化,输出不变。 V_{out}=\frac{D}{1-D} * V_{in} 占空比 > 50 %,升压模式。 占空比 < 50 %,降压模式。 占空比 = 50 %,理论上相等。
首先 STM32 要支持,F4 以上部分型号支持。 CCM-SRAM 通过专用的总线与 Cortex-M4 内核直接相连,绕过了 AHB 总线矩阵。这意味着它可以实现零等待周期的访问,提供最高的访问速度和确定性。 因此 DMA 无法访CCM-SRAM 只能被 Cortex-M4 内核访问,不能被 D