栈空间带来的大问题

复杂单片机项目,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后问题解决。

相关推荐
wuyk5551 小时前
从零吃透Modbus通信|第3章:STM32 Modbus RTU主机
服务器·开发语言·网络·数据结构·stm32·单片机·嵌入式硬件
恒锐丰小瑞3 小时前
率能SS6285L 18V/5A/单通道直流电机驱动IC,超低导通电阻(58mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人
天空'之城3 小时前
单片机基础核心知识点汇总(二十)
单片机·嵌入式硬件
笨笨饿4 小时前
#121_图传中的H.364编码与MP4的联系
linux·运维·前端·单片机·嵌入式硬件·面试·职场和发展
送外卖的工程师4 小时前
STM32智能鞋柜(机智云)
stm32·单片机·嵌入式硬件
Romantic_love_6 小时前
USART串口初始化源码解析
stm32·单片机·嵌入式硬件·学习
oshan20126 小时前
零基础STM32入门教程--11-USART/UART 串行通迅
stm32·单片机·嵌入式硬件
BW.SU7 小时前
RUI Studio--嵌入式 UI 开发新范式
单片机·ui·嵌入式开发
集芯微电科技有限公司7 小时前
700V/17A高频开关低导通阻GaN HEMT驱动器适用于快充,LLC,PFC功率校正
人工智能·嵌入式硬件·深度学习·神经网络·机器学习·生成对抗网络·计算机外设