[STM32F0] 加入printf语句后出现如下错误.求助

[复制链接]
777|4
 楼主| nuc990 发表于 2020-10-9 14:54 | 显示全部楼层 |阅读模式
加入printf语句后出现如下错误.求教如何解决

Error: L6406E: No space in execution regions with .ANY selector matching ddl.o(i.ddl_memclr).

代码里面已经重定位了
  1. //取消ARM的半主机工作模式
  2. #pragma import(__use_no_semihosting)                             
  3. struct __FILE {
  4.     int handle;
  5. };

  6. FILE __stdout;         
  7. _sys_exit(int x)
  8. {
  9.     x = x;
  10. }

  11. int fputc(int ch, FILE *f){      
  12.     while((USART1->SR&0X40)==0);
  13.     USART1->DR = (u8) ch;      
  14.     return ch;
  15. }
gddddd 发表于 2020-10-9 17:38 | 显示全部楼层
可能是程序编译后的FLASH或SRAM容量超出芯片容量,没有空间了就报错
可以试试以下方法:
1、如果是FLASH超了,可以设置->Target->勾选Use microLib
2、如果是FLASH超了,可以设置->C/C++->将优化选成Level 3
3、如果是SRAM超了,可以将程序中的一些不变的数组更改定义为CONST类型再试试
zhuotuzi 发表于 2020-10-9 22:18 | 显示全部楼层
int fputc(int ch,FILE *f)
{
        USART3->TDR = ch;
        while(!(USART3->ISR & LL_USART_ISR_TC))
                {;}
                return ch;
}
zhuotuzi 发表于 2020-10-9 22:19 | 显示全部楼层
重定向要放前面,最好放最开始。
zhuotuzi 发表于 2020-10-9 22:28 | 显示全部楼层
把你工程发出来看看,感觉不应该啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

114

主题

225

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部