打印

求助:Keil环境,0级编译正常,3级编译无效

[复制链接]
4711|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yayayalail|  楼主 | 2011-6-15 20:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大虾们好,问题如下:

    我用的是 STM32F103VC这颗芯片。在Keil环境下,采用0级编译软件功能正常,采用3级编译后软件无法使用。编译过程中有一个警告,不知道是不是这个警告导致的,请各位帮忙看看,先谢谢了!
警告如下:
NewMode.axf: Warning: L6969W: Changing AT Section .ARM.__AT_0x0800C800 type from RW to RO in ER_IROM1.
Program Size: Code=65892 RO-data=33384 RW-data=876 ZI-data=22508
沙发
airwill| | 2011-6-16 17:07 | 只看该作者
连接地址分配错误, 0x0800C800 应该是在你的 rom 代码中的, 你有没有使用 __at 这样的强制地址呢
这个地址跟连接器冲突了, 修改一下吧

使用特权

评论回复
板凳
yayayalail|  楼主 | 2011-6-16 18:07 | 只看该作者
2# airwill

谢谢airwill

是定义了这样的强制地址,修改之后,还是存在同样的问题,三级编译出来的软件无**常使用。带仿真发现始终停留在一个函数里面。
函数定义为:
unsigned char* Read_One_ASCII6_12(unsigned char ASCIICode)
{
unsigned int TAB_addr=0;
TAB_addr=0x66d40;
if ((ASCIICode >= 0x20)&&(ASCIICode <= 0x7E))
  TAB_addr = (ASCIICode-0x20)*12+TAB_addr ;
RX_Index=0;
TX_Index=0;
TX_Buf[0]=0x0b;
TX_Buf[1]=TAB_addr>>16;
TX_Buf[2]=TAB_addr>>8;
TX_Buf[3]=TAB_addr;
TX_Buf[4]=0x05;
Finish_Flag=0;
ByteNum=12;
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
SPI_Cmd(SPI1, ENABLE);
while(!Finish_Flag);----------------停留在这一行。
Finish_Flag=0;
return RX_Buf+5;
}

使用特权

评论回复
地板
香水城| | 2011-6-16 18:09 | 只看该作者
提示:volatile

使用特权

评论回复
5
yayayalail|  楼主 | 2011-6-16 19:22 | 只看该作者
4# 香水城


谢谢香主提示,将Finish_Flag定义为volatile 后,初始化可以通过,但同时又出现了其他问题,导致所有的汉字显示不出来。。。。但其他功能正常..:L

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

18

帖子

1

粉丝