你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM8S207RB 每次下载前必须用STVP修改选项字才能下载

[复制链接]
佛珠里的线-391817 提问时间:2015-8-10 15:41 /
我的程序只是使用的W5500的程序,其他什么都没开,每次下载前都必须用STVP修改选项字,才能再次下载,我进行一步步试验,发现程序中只要加入下面这些,程序运行后,再次下载时就必须STVP修改选项字。memset(&W5500Object.W5500Inf,0,sizeof(W5500Object.W5500Inf));                /* 将W5500Inf全部清零*/    memcpy(W5500Object.W5500Inf.IPAddr,W5500IPAddr,sizeof(W5500IPAddr));         /* 将IP地址写入W5500Inf中 */
    memcpy(W5500Object.W5500Inf.GWIPAddr,W5500GWIPAddr,sizeof(W5500GWIPAddr));   /* 将网关IP地址写入W5500Inf中 */
    memcpy(W5500Object.W5500Inf.MASKAddr,W5500IPMask,sizeof(W5500IPMask));       /* 将子网掩码写入W5500Inf中 */


上面这些语句只是对一个结构体进行清零和部分赋值,这些操作为啥会造成这种现象,而且我把整个W5500的初始化加入其中,还会有一奇怪的现象,就是我运行时,时钟那边经常性会运行不过去,就在时钟自动切换的时候
while (!CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,\
            CLK_CURRENTCLOCKSTATE_DISABLE));
     /*切换到外部时钟,并等待时钟却换成功*/




各位大侠,麻烦尽快帮忙解决下,多谢多谢,本来初接触STM8S的东西,以前只弄过STM32的



下载出错图.png
下载出错图2.png
收藏 评论10 发布时间:2015-8-10 15:41

举报

10个回答
佛珠里的线-391817 回答时间:2015-8-10 16:59:54
没人遇到过这样的问题吗????
你好我好大家好! 回答时间:2015-8-10 18:39:31
帮顶                     
JackieLaura 回答时间:2015-8-11 10:15:57
把目录换成英文的试试看。。。目录深度是不是太大了
stmcu.org.png
佛珠里的线-391817 回答时间:2015-8-11 13:41:50
目录全部改成英文试过还是一样的效果,不能解决问题!
今天发现一个现象,如果把时钟改换成内部时钟就没有问题,还请各位大侠帮忙看看怎么回事
佛珠里的线-391817 回答时间:2015-8-11 17:39:57
解决了,各位!但是具体原因我还没搞清楚,是时钟设置问题,void SystemClock_Init(SystemClock_TypeDef sysclk)
{
   if(sysclk==HSE_Clock)/*选用外部时钟*/
   {
     #ifdef DEBUG
     HSE_ClockStartUpConfiguration(HSE_24MHz,HSECNT_8CLK);
     #endif
     
     while (!CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,\
            CLK_CURRENTCLOCKSTATE_DISABLE));
     /*切换到外部时钟,并等待时钟却换成功*/
   }
   else
   {
     #ifdef DEBUG
     DefaultSystemClockForHSI();
     #endif
     CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
   }

}
我这么设置时,就会出现问题。但是
static void CLK_Config(void)
{
    /* Initialization of the clock */
    CLK_DeInit();
    Set_Flash_wait_OptionByte();
    /* Configure the Fcpu to DIV1*/
    CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
    CLK_SWIMConfig(CLK_SWIMDIVIDER_2);
//    CLK_HSECmd(ENABLE);
//    while((CLK->ECKR & 0x02) == 0x00); // 等待外部高速振荡器准备好
    /* Configure the HSI prescaler to the optimal value */
    CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);   
    /* Configure the system clock to use HSE clock source and to run at 24Mhz */
    CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE, CLK_CURRENTCLOCKSTATE_DISABLE);   
}
void Set_Flash_wait_OptionByte(void)
{
  uint16_t Flash_wait_Option_status;/*记录访问flash等待状态,为了调使用的*/
  Flash_wait_Option_status=FLASH_ReadOptionByte(Flash_wait_OptionAddr);
  /*Flash_wait_Option_status是一个16位,bit15~8的高8为,是Flash_wait_OptionAddr
  地址的数据,其中bit15~9是保留的,因此是0,如果bit8是1,则表明访问flash要1一个周期的
  访问周期,bit7~0的数据是Flash_wait_OptionAddr+1地址数据,跟bit15~8的数据是相反的,
  在STM8里面,如果你使用外部时钟大于16M,小于24M的话,访问flash必须要配置Flash插入一个等待周期*/
//  printf("\r\nWAITSATATE状态:0x%X\r\n",Flash_wait_Option_status);
if((Flash_wait_Option_status&0x0100)==FALSE)
   FLASH_ProgramOptionByte(Flash_wait_OptionAddr,FLASHWAITSTATE);
}
这么设置时就可以!真搞不明白,下面这个写选项字都没对FLASH进行解锁和上锁,但是他就行了,不知道各位大侠有什么解释啊
佛珠里的线-391817 回答时间:2015-8-18 10:06:17
上面解决方法错误,问题持续出现。最终解决方法是:STM8S最好不要用24M时钟,使用外部24M时钟需要增加一个FLASH操作等待周期,在STM8里面,如果你使用外部时钟大于16M,小于24M的话,访问flash必须要配置Flash插入一个等待周期,这个修改OPTION BYTE容易出错,最好的方法就是用STVP先把OPTION BYTE下载下去,然后再下程序
bobo-388892 回答时间:2015-8-19 09:02:57
程序里面修改选项字,是容易出问题的,最好是用STVP下载,如果一定要程序修改的话,一定要加上判断(先读取选项字,看是否已经修改了,没有的话再修改),选项字只用修改一次。
佛珠里的线-391817 回答时间:2015-8-24 13:18:08
void Set_Flash_wait_OptionByte(void)
{
  uint16_t Flash_wait_Option_status;/*记录访问flash等待状态,为了调使用的*/
  Flash_wait_Option_status=FLASH_ReadOptionByte(Flash_wait_OptionAddr);
if((Flash_wait_Option_status&0x0100)==FALSE)
   FLASH_ProgramOptionByte(Flash_wait_OptionAddr,FLASHWAITSTATE);
}

我已经读取了状态进行判别了,还是不行,我还找到一种说法,在修改选项字节的时候是否要先解锁FLASH,修改完了之后需要上锁FLASH,不知道这个大家有什么见解
爱哭的热带鱼 回答时间:2015-8-27 10:37:26
我遇到过相同的提示..不过是调试器问题..重新插拔一下调试器就OK了..................
佛珠里的线-391817 回答时间:2015-9-6 14:40:27
8楼是正解,不过我在程序里做判断也不行
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版