打印
[STM8]

关于STM8151C8块烧写死机的问题,求各位大神指教

[复制链接]
2930|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
近日用IAR FOR STM8 1.3 +ST 做IAP,用到ST的固件库需要用到块烧写
下面是我的块烧写代码:
IN_RAM(void FLASH_Program(INT16U numblock,INT16U sumblock, INT8U *DataBuf))
{
  INT8U count;
  INT32U FlashAddr_Start = UPGRADEINLINE_APPSTART_ADDR
        + numblock * UPGRADEINLINE_DATAPCK_BYTESIZE;
  INT32U FlashAddr_Last = UPGRADEINLINE_APPSTART_ADDR
      + (numblock + 1) *  UPGRADEINLINE_DATAPCK_BYTESIZE;



   FLASH->CR2 |= FLASH_CR2_PRG;//选择块编程
   for(count = 0;count < 128;count++)
  {
*(((PointerAttr INT8U *)(INT32U)FlashAddr_Start)+ count)    = (INT8U)DataBuf[count];      (在这里死机了)
  }  
}
每当程序进入到函数循环时CPU就像死掉一样,仿真调试就停在这!我烧写的FLASH起始是址是0X9000;FLASH也解锁了,请各位大大或用过STM8块烧写的朋友指教啊,请问我在哪个地方操作不当或少操作了(注:用过字编程,成功了,只不过太慢了,60K的程序要两分钟左右,现在不得在改块编程)有好心的朋友能可以给我这方面的源码或例子吗,我邮箱:910377182@qq.com

1111111.png (77.95 KB )

1111111.png

222222.jpg (6.19 KB )

222222.jpg

33333333.png (14.25 KB )

33333333.png
沙发
junwei05|  楼主 | 2012-9-26 13:35 | 只看该作者
自己先顶下,求大神求香主!

使用特权

评论回复
板凳
IJK| | 2012-9-26 14:04 | 只看该作者
不进行仿真调试 试试看,说不定仿真调试 会影响块烧写的正常运行。

使用特权

评论回复
地板
junwei05|  楼主 | 2012-9-26 14:12 | 只看该作者
3# IJK

你好,十分感谢你的回得,不仿真也一样啊,你有用过块编程吗

使用特权

评论回复
5
junwei05|  楼主 | 2012-9-26 14:42 | 只看该作者
没什么人用过STM8的块编程吗?看过其它相关块编程的贴也没人的回的?

使用特权

评论回复
6
liuxiaoyun1210| | 2012-9-26 17:50 | 只看该作者
5# junwei05
现在我们是字节编程是可以,但速度太慢。块编程一开始我们也是死机,需要改那个FLASH寄存器,即:
   /* Selection of Standard or Fast programming mode */
    if (FLASH_ProgMode == FLASH_PROGRAMMODE_STANDARD)
    {
        /* Standard programming mode */ /*No need in standard mode */
        //FLASH->CR2 |= FLASH_CR2_PRG;
        //FLASH->NCR2 &= (uint8_t)(~FLASH_NCR2_NPRG);

   FLASH->CR2=0x41;// FLASH_CR2_PRG;
      FLASH->NCR2=0xfe;// (uint8_t)(~FLASH_NCR2_NPRG);

    }
但是速度块编程速度依旧很慢,不知楼主有没有解决
    }

使用特权

评论回复
7
liuxiaoyun1210| | 2012-9-26 17:53 | 只看该作者
1# junwei05
楼主,你字编程,60K的程序,两分钟能升级完吗??我这边字节编程50K,需要5分钟呀!

使用特权

评论回复
8
junwei05|  楼主 | 2012-9-26 18:44 | 只看该作者
7# liuxiaoyun1210

这位朋友你好,我没记错的话,在理论上字编程速度应该是字节编程的4倍,你自己估算一下,除了处理通信和数据处理数据外,60K程序就大概是2分钟左右,不会超过2分半钟,我这边用的是485通信,59K程序,IAP升级实测是2分10多秒左右!

使用特权

评论回复
9
junwei05|  楼主 | 2012-9-26 18:44 | 只看该作者
7# liuxiaoyun1210

这位朋友你好,我没记错的话,在理论上字编程速度应该是字节编程的4倍,你自己估算一下,除了处理通信和数据处理数据外,60K程序就大概是2分钟左右,不会超过2分半钟,我这边用的是485通信,59K程序,IAP升级实测是2分10多秒左右!

使用特权

评论回复
10
junwei05|  楼主 | 2012-9-26 18:51 | 只看该作者
6# liuxiaoyun1210

非常感谢你给的源码,现在现在已经回到家,明天我试一试行不行!速度块编程我也会试,如果都OK,我明天复你!

使用特权

评论回复
11
junwei05|  楼主 | 2012-9-26 21:33 | 只看该作者
6# liuxiaoyun1210

liuxiaoyun1210 你好,一开始看到你的代码,我十分惊喜,因为我以为FLASH_NCR2这个寄存器没设置,但后来我查了一下DATASHEET,发现上面这个寄存器只在STM8S中有,STM8L中没有,我用的是STM8L151C8,截图你看看

stm8s.png (88.36 KB )

stm8s.png

stm8l.png (34.61 KB )

stm8l.png

使用特权

评论回复
12
liuxiaoyun1210| | 2012-9-27 10:01 | 只看该作者
11# junwei05
我一直认为是STM8S与STM8L只是在工作电压有区别

使用特权

评论回复
13
junwei05|  楼主 | 2012-9-27 12:51 | 只看该作者
还有没有大神啊?求解答!

使用特权

评论回复
14
liuxiaoyun1210| | 2012-9-27 13:40 | 只看该作者
11# junwei05
还有要注意的是在块写前,要块擦,但是我这边调用库中的块擦只能擦除4个字节。

使用特权

评论回复
15
junwei05|  楼主 | 2012-10-8 09:08 | 只看该作者
请问还有没有大神,求指教!求香主!

使用特权

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

本版积分规则

0

主题

37

帖子

1

粉丝