STM8用STlink和串口都下不了程序了

2019-07-19 22:02发布

我用的是IAR,IAR用STlink下载时提示如下:

点击yes后如下:

串口下载时按下复位键后离开点next提示如下:
提示打大概意思是boot loader不能启动和flash保护,IAR的提示是控制字读保护,现在是怎么都下不进去程序了,而且原来的程序也没运行了,我确定。
之前一直是两种方式都可以下载的,用STlink  SWIM也是可以仿真的,我改了控制字OPT5 ,本是想把STM8的启动等待时间改短一点,代码如下:
//选项字配置函数 void option_byte(void) {     //9个选项字配置寄存器值数组     //u8 opt[9]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}     //u16 opt1_add1=0x4800,opt1_add2=0x4801;     u16 opt7_add1=0x480d,opt7_add2=0x480e,opt5_add1=0x4809,opt5_add2=0x480a;     do     {         FLASH_DUKR = 0xae; // 写入第一个密钥         FLASH_DUKR = 0x56; // 写入第二个密钥     } while(FLASH_IAPSR_DUL == 0); // 若解锁未成功,则重新再来     FLASH_CR2 = 0x80;//使能选项字修改     FLASH_NCR2= 0X7f;//选项字互补寄存器          *((u8*)opt5_add1) = 0xb4;      // 24M外部时钟128个启动延时时钟     while(FLASH_IAPSR_EOP == 0); // 等待写操作成功     *((u8*)opt5_add2) = 0x4b;  //延时互补寄存器     while(FLASH_IAPSR_EOP == 0); // 等待写操作成功          *((u8*)opt7_add1) = 0x01;      // 24M外部时钟时FLASH访问等待1个时钟     while(FLASH_IAPSR_EOP == 0); // 等待写操作成功     *((u8*)opt7_add2) = 0xfe;  //FLASH访问等待选项字互补寄存器     while(FLASH_IAPSR_EOP == 0); // 等待写操作成功          FLASH_CR2 = 0x00;//禁止选项字修改     FLASH_NCR2= 0Xff;//选项字互补寄存器     FLASH_IAPSR_DUL = 0;//写保护 }
我用的24M外部晶振,这个程序最开始只对OPT7做了修改,因为手册里面说时钟》16M时要让fllash等待一个时钟什么的,是没有有问题,我加入对OPT5的操作后就下不了程序了,求大神帮忙啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。