在eclipse中使用gcc-arm-none-eabi-5_42016q3-20160926工具链。 处理器:STM32F030 我有一个三行程序,可以在进行任何硬件初始化之前启动以隔离问题:
PuzzleControllerVM
我将RAM设置为0XAA,这样我就可以看到什么被破坏了,为堆栈留下了足够的空间。 在执行memset指令后,堆栈指针位于0X20001F78处,内存是0XAA到0X20001F00。执行完sscanf函数后,堆栈指针返回0X20001F78,但是内存一直被破坏到0X20001BB4,这使我认为此简单调用占用了将近1K的堆栈,或者例程中存在其他错误。我已经停止使用此功能,但很好奇这是否是预期的行为?另外,在嵌入式系统中是否应该避免使用一系列C函数,这让我感到惊讶,但是从搜索中我发现我并不孤单。