STM32L051单片机堆栈溢出现象

本文讲述了在STM32L051单片机编程时遇到的堆栈溢出现象。通过分析NVIC中断优先级设置和堆栈大小,发现由于中断处理中数据处理量过大导致堆栈溢出,从而影响数据读取。通过增大堆栈大小,解决了问题,使得数据读取恢复正常。作者建议在遇到难题时,可以从基础再次分析问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、在使用STM32编程时,通常我们不会关注堆栈空间的大小,在STM32的启动文件中,已经帮我们预先设置好了堆栈空间的大小。如下图所示的启动代码中,Stack栈的大小为:0x0400(1024Byte),Heap堆的大小为:0x0200(512Byte)。

 2、NVIC中断优先级设置如下,实现的功能也很简单,

1)、SPI1连接DMA2_3与ADXL355倾角传感器进行通信,DMA4_5_6_7连接串口1;

2)、定时器21设置每100ms中断一次,读取ADXL355倾角传感器的数据;

3)、读取数据后,进行滤波、偏移、均方根处理,大约耗时63.5ms,处理函数在DMA中断函数中处理;

 3、使用串口调试助手,每隔300ms向单片机发送查询数据,在屏蔽写入数组的代码时发现读回的数据是乱码,如下,数据顺序为【温度数据】【X轴原始值】【Y轴原始值】【Z轴原始值】。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值