
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
栈是一块按“后进先出”方式使用的内存区域。函数参数;局部变量;返回地址;CPU寄存器;中断现场;临时计算结果;函数调用链信息。FunctionA入栈↓FunctionB入栈↓FunctionC入栈↓FunctionC返回并释放↓FunctionB返回并释放↓FunctionA返回并释放栈空间会随着函数调用逐渐消耗,函数返回后逐渐恢复。堆是用于动态内存分配的区域。/* 分配失败 */return;/
如果服务器先生成README,就会额外产生一套服务器提交历史,第一次Push可能出现非快进或历史不相关问题。【配图23:GitLab项目3 Commits、1 Branch、3 Tags】不要手动猜仓库地址,应以GitLab页面显示的Clone地址为准。Linux内核仓库文件多、体积大,首次Push可能需要几分钟。不是服务器,也不是固定关键字,而是远程仓库地址的常用别名。【配图1:Git Bash
text通常保存程序机器指令。最终会被编译成 ARM Thumb 机器指令。FlashCPU 运行时直接从 Flash 取指执行。.rodata也就是只读数据。字符串和 const 常量通常不会在程序运行期间修改,因此通常可以直接保存在 Flash。speed有初始值的全局变量是允许的。所以speed运行时必须位于可以修改的 RAM 中。但是 RAM 掉电后内容会丢失。100从哪里来?答案是:初始
所谓时钟树,就是描述:MCU内部各种时钟从哪里来、经过什么倍频和分频、最终送给哪些模块。HSI│HSE│▼PLL│▼SYSCLK││▼HCLK┌───┴───┐│ │APB1 APB2│ ││ │各类外设 各类外设所以看到CubeMX复杂的时钟树时,不需要一次把所有线都看懂。时钟源 → PLL → SYSCLK → HCLK → PCLK → 外设SYSCLK↓↓HCLKHCLK = SYSCLK

可以触发半传输中断。可以触发全传输中断。DMA填充前半区↓半传输中断↓CPU处理前半区DMA继续填充后半区↓全传输中断↓CPU处理后半区这是一种典型的“乒乓处理”思想。DMA持续采集;CPU分块处理;减少数据停顿;降低缓冲区被覆盖的风险。Buffer ABuffer BDMA写Buffer ACPU处理Buffer BDMA写满Buffer A后切换到Buffer BCPU开始处理Buffer A
平均滤波;滑动平均;中值滤波;限幅滤波;IIR低通;过采样;卡尔曼滤波。ADC采集结果不稳定,不一定是ADC外设本身损坏。参考电压不稳定;ADC输入悬空;信号源阻抗过大;采样时间不足;缺少模拟滤波;电源和地线干扰;PCB布局不合理;输入电压超范围;多通道之间相互串扰。ADC时钟配置错误;采样周期太短;没有执行ADC校准;读取时序不正确;通道Rank和DMA顺序错误;缓冲区数据类型错误;整数计算溢出
计数就是对一个个脉冲进行累加或递减。第1个脉冲到来:CNT = 1第2个脉冲到来:CNT = 2第3个脉冲到来:CNT = 3……第100个脉冲到来:CNT = 100这里的CNT可以理解为计数器当前保存的数值。如果脉冲来自单片机内部稳定的时钟,那么计数值就可以反映经过的时间。如果脉冲来自单片机外部引脚,那么计数值就可以反映外部事件发生的次数。因此,定时和计数的区别主要不在计数器本身,而在于:用来
假设:100℃100%50℃误差很大。增加输出但是:100%无法继续增加。越来越大当温度接近目标:积分还保持很大输出。温度超过目标产生严重超调。积分限幅抗饱和算法条件积分计算误差↓P快速纠正当前错误I消除长期偏差D预测变化趋势↓调整输出↓让系统稳定达到目标一句话总结:P负责速度,I负责精度,D负责稳定。在STM32、PLC、变频器、电机控制、温控系统以及工业自动化设备中,PID仍然是最经典、应用最

HardFault 并不是无法解决的“玄学故障”。PCLRSPCFSRHFSRMMFARBFARELF 文件MAP 文件addr2line反汇编调用链运行日志通常就能逐步接近真正的故障原因。工程中最重要的不是让设备在 HardFault 后立刻重启,而是:在重启之前,尽可能保存完整的崩溃现场。因为只有留下现场,才能真正解决那些偶发、随机、难以复现的嵌入式故障。








