…\OBJ\Health-sys.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_it.o(i.DebugMon_Handler).
keil5使用sprintf格式化报错内存空间不足
例子如下。
data.current是float类型,结果报错
sprintf((char*)Buff,"I :%.2fmA",data.current);
..\OBJ\Health-sys.axf: Error: L6406E: No space in execution regions with .ANY selector matching stm32f10x_it.o(i.DebugMon_Handler).
找了很多方法,改了环境变量,还是没解决,之后看了这位大佬的博客,解决了。
链接: Keil C中的sprintf函数
结果
除了float类型不能用,u8 u16 char都可以格式化字符串,
typedef struct Detection{
u16 current;u16 time;u16 temp;u16 angle;
char pwr[4];char date[11];
}Data;
然后输出的时候就自己想办法,比如A变成mA,也有0.001的精度。就酱。