打印
[开发工具]

STM32F103ZCT6用KEIL调试怪事情

[复制链接]
4596|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
leeyr|  楼主 | 2009-4-7 14:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这两天用STM32F103ZCT6开发碰到怪事了:
我用KEIL + JLINK II进行开发,在编译好以,下载到我的片上,
用反汇编看烧写下去的代码,会有一段区域是全1,也就是代码没有烧写成功,不知为什么1!!开始怀疑是这个扇区坏了,但用别一个程序进行调试,发现这个区域又是有数据的,轮到另一个区域是全1了!怪!!
现在也吃不准是硬件坏了,还是软件上那个地方有问题。
还望高手指教!
沙发
computer00| | 2009-4-7 14:51 | 只看该作者

程序运行正常吗?也许那一段本来就不用写数据。

使用特权

评论回复
板凳
leeyr|  楼主 | 2009-4-7 15:01 | 只看该作者

运行不正常。这一段本来应该有数据的

    58:  
    59:  
    60:   u8 c,AckNum,ErrorNum,sum,BlockNum,code;  
    61:   u16 i; 
    62:   u32 *PData; 
0x08001B6A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    63:   AckNum = 0; 
0x08001B6E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    65:   sum = 0; 
0x08001B72 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    67:   InitVar(); 
0x08001B76 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    68:   FLASH_Unlock(); 
    69: /* Clear All pending flags */ 
0x08001B7A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    70:  FLASH_ClearFlag(FLASH_FLAG_BSY | FLASH_FLAG_EOP | FLASH_FLAG_PGERR | FLASH_FLAG_WRPRTERR); 
0x08001B7E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B82 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B86 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B8A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B8E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B92 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B96 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B9A FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001B9E FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    75:   while(AckSucceed != 1)//握手 
    76:   { 
0x08001BA2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BA6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    78:     if(RecFail == 1) 
    79:     { 
0x08001BAA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BAE FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    80:       break; 
    81:     } 
0x08001BB2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BB6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BBA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    88:       AckNum = 0; 
0x08001BBE FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BC2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BC6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BCA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BCE FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BD2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    95:       USART_SendData(USART1, ACK); 
    96:     } 
0x08001BD6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BDA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    97:     if(ErrorNum >= 5) 
    98:     { 
0x08001BDE FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    99:       AckSucceed = 0; 
0x08001BE2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BE6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    75:   while(AckSucceed != 1)//握手 
    76:   { 
    77:     c = RecieveByte(); 
    78:     if(RecFail == 1) 
    79:     { 
0x08001BEA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BEE FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
    80:       break; 
    81:     } 
    82:     if(c == 0xa5) 
    83:     { 
    84:       AckNum++; 
    85:     } 
    86:     else 
    87:     { 
    88:       AckNum = 0; 
    89:       USART_SendData(USART1, NAK); 
    90:       ErrorNum++; 
    91:     } 
    92:     if(AckNum >= 5) 
    93:     { 
    94:       AckSucceed = 1; 
    95:       USART_SendData(USART1, ACK); 
    96:     } 
    97:     if(ErrorNum >= 5) 
    98:     { 
    99:       AckSucceed = 0; 
   100:       break; 
   101:     }     
   102:   }   
0x08001BF2 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
   106:     RecFail = 0; 
   107:     //FlashAddr = 0x8002000; 
0x08001BF6 FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BFA FFFFFFFF  DCD      0xFFFFFFFF   ; ? Undefined
0x08001BFE FFFF4604  DCD      0xFFFF4604   ; ? Undefined
   109:     if(RecFail == 1) 
0x08001C02 4838      LDR      r0,[pc,#224]  ; @0x08001CE4
0x08001C04 7800      LDRB     r0,[r0,#0x00]
0x08001C06 2801      CMP      r0,#0x01
0x08001C08 D100      BNE      0x08001C0C
   110:       break; 
0x08001C0A E09A      B        0x08001D42
   111:     sum = c; 
0x08001C0C 4627      MOV      r7,r4
   112:     FlashAddr = (u32)c << 24; 
0x08001C0E 0620      LSLS     r0,r4,#24
0x08001C10 4936      LDR      r1,[pc,#216]  ; @0x08001CEC
0x08001C12 6008      STR      r0,[r1,#0x00]
   113:     c = RecieveByte(); 
0x08001C14 F7FFFEE6  BL.W     RecieveByte (0x080019E4)
0x08001C18 4604      MOV      r4,r0
   114:     sum += c; 
0x08001C1A 4427      ADD      r7,r7,r4
   115:     FlashAddr += (u32)c << 16; 

使用特权

评论回复
地板
vigia| | 2009-4-7 16:34 | 只看该作者

估计你烧flash的算法没选对

看看芯片型号和你选的算法对的上伐

使用特权

评论回复
5
leeyr|  楼主 | 2009-4-7 17:00 | 只看该作者

烧写算法在哪里选啊?

是不是Options for target 中的device 选择?这个我选对了的!

使用特权

评论回复
6
78023367| | 2010-4-30 10:44 | 只看该作者
这个问题我也遇到了 不知道该怎么解决,能试的都已经想到了。
你的问题解决了吗? 能教教我怎么弄吗?

使用特权

评论回复
7
灵动系统| | 2010-4-30 10:47 | 只看该作者
这个要学习下啊!以后遇到了就嫩马上解决。
LZ如果解决了就一定要告诉我们啊!
谢谢!

使用特权

评论回复
8
78023367| | 2010-4-30 11:00 | 只看该作者
我已经整了三天了, 用simulator是正常的, 一用设备调试就出错。
快要疯了!
LZ如果搞定了  教教我啊!  
谢谢了!

使用特权

评论回复
9
piczero| | 2014-10-6 16:26 | 只看该作者
我也遇到这样问题,郁闷死了,同样的一段代码在另一个工程正常.

使用特权

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

本版积分规则

22

主题

68

帖子

0

粉丝