栈空间带来的大问题

复杂单片机项目,rtt-nano框架,5路串口,1路spi,2路iic,usb,tmr,adc,大量dma,导致中断服务函数包含了大量内容,比如串口中串口+dma+idle中断,比如串口的tdc中断负责定位发送完毕,比如几乎每个dma都有对应中断,iic中断,spi中断,比如systick中断,比如用tmr实现的微秒级延时+链表组成微秒级定时任务等等,大量的ISR代码导致默认的栈空间被快速占满,结果导致一个极其奇怪的问题:

使用seggerRTT搞定了rtt-nano的msh功能,然后,使用msh指令测试flashdb的tsdb的写入过程中,如果注释掉iic的ISR中断服务函数,就能正常测试;如果不注释保留,那么当反复多次测试写入、打印过程,或者是先执行list_thread指令再执行打印测试,mcu 就死机。删掉iic服务函数就不死机。

最终定位为栈空间不足,扩大16倍到64kB后问题解决。

相关推荐
xx~t5 小时前
嵌入式学习——ARM1
linux·arm开发·嵌入式硬件·arm
xx~t5 小时前
嵌入式——ARM1(详细篇)
linux·arm开发·嵌入式硬件·arm
周洲08305 小时前
STM32 ADC 采集实战|电压采集、分压计算、数据滤波
stm32·单片机·嵌入式硬件
狂奔蜗牛(bradley)6 小时前
搞定100ns抖动:ARM+FPGA混合EtherCAT主站实战方案
嵌入式硬件·fpga开发
SKH.7 小时前
单片机(2)
单片机
HZZD_HZZD7 小时前
CSDN_批发市场水电漏损归因算法LAM的原理与落地
嵌入式硬件·物联网·算法
DaTou大头7 小时前
STM32第三篇
单片机·嵌入式·电路基础
H_oRIZoN_8 小时前
Linux入门DAY40(51 单片机入门:GPIO、中断、定时器、PWM、蜂鸣器完整梳理)
单片机·嵌入式硬件
LCG元9 小时前
STM32F103 复位来源诊断实战:RCC_CSR 标志位判优、BKP 复位计数持久化与六种复位源注入实测
stm32·单片机·嵌入式硬件
HUI-47410 小时前
EG1177|SOP‑7 内置 100V‑NMOS 异步降压,20‑90V 高压恒压恒流小功率电源优选
嵌入式硬件·硬件工程