原创 STM8不用手动复位进入自带Bootloader方法(串口下载)

2012-7-28 20:53 8000 12 13 分类: MCU/ 嵌入式

STM8不用手动复位进入自带Bootloader方法(串口下载)

除非STM8片子的空的,如果复位运行的是自带Bootloader,而且要通过串口下载程序的话,必须在1s内点击上位机,要不然就运行用户程序了。
这一步很麻烦,所以想把它给省掉。
后来发现上位机Flash Loader Demonstrator在启动画面点击Next后,会先从串口的DTR、RTS输出一个大概100多毫秒的脉冲,TTL电平就是负脉冲了,之后才会和单片机通信。
所以只要按照下面的图接线,如果单片机复位运行的是自带Bootloader,只要在Flash Loader Demonstrator启动画面点击Next,软件就会复位单片机,不用自己手动复位再点击Next就可以和单片机通信了。


attachimg.gif

ourdev_584482AHFIL8.jpg (95.32 KB)
2010-12-30 05:06




attachimg.gif

ourdev_584483VAMTSX.jpg (101.08 KB)
2010-12-30 05:06



还有就是下载STM8S或STM8L时候的Flash Loader Demonstrator启动画面设置不一样
STM8S是这样:


attachimg.gif

ourdev_584484GF34HC.jpg (60.28 KB)
2010-12-30 05:06


STM8L是这样:


attachimg.gif

ourdev_584485XKMQJ1.jpg (63.51 KB)
2010-12-30 05:06



还有关于复位是否运行自带Bootloader,至少符合下面两个条件之一就可以了
1、器件是空的(新买的就是空的)
2、optionbyte里的Bootloader是Enable的

新的器件optionbyte里的Bootloader是disable的,为了能不止一次使用串口下载程序,第一次下载的程序必须修改optionbyte使得Bootloader Enable
这是STM8S的程序:
#include "iostm8.h"
void main(void)
{
    FLASH_DUKR = 0xae;
    asm("nop");
    FLASH_DUKR = 0x56;
    asm("nop");
    while(!(FLASH_IAPSR & 0x08));
    asm("nop");
    FLASH_CR2 = 0x80;
    asm("nop");
    FLASH_NCR2 = 0x7f;
    asm("nop");
    *((unsigned char *)0x487e) = 0x55;
    asm("nop");
    *((unsigned char *)0x487f) = 0xaa;
    while(1);
}
点击此处下载 STM8S_BL_EN.rar (12.95 KB)

STM8S_BL_EN.rar (12.95 KB)
下载次数: 420
2010-12-30 05:06


这是STM8L的程序:
#include "iostm8L152c6.h"
void main(void)
{
    FLASH_DUKR = 0xae;
    asm("nop");
    FLASH_DUKR = 0x56;                  // 解除写保护
    asm("nop");
    while(!(FLASH_IAPSR & 0x08));       // 等待解锁
    asm("nop");
    FLASH_CR2 = 0x80;                   // 对选项字节进行写操作
    asm("nop");
    *((unsigned char *)0x480b) = 0x55;
    asm("nop");
    *((unsigned char *)0x480c) = 0xaa;  // 写入选项字节
    while(1);
}
 

文章评论1条评论)

登录后参与讨论

用户252492 2016-4-23 02:06

新版的软件上没有这个效果了。
相关推荐阅读
用户1017182 2016-03-20 13:49
STM8-STVD(COSMIC)定义变量指定其类型和位定义
stm8 stvd下near等于51的xdatatiny等于51的idata 如何分配变量到指定的地址 举例: unsigned ch...
用户1017182 2016-03-05 21:59
磁保持继电器的效率问题
怎样才能最大化的发挥磁保持继电器的优势呢?...
用户1017182 2014-05-03 14:38
指示电量不足的简单电路设计
图中所示的设计实例可指示使用四节AA电池供电的音频测试仪器出现的电量不足状态。由于该仪器采用的是分立式设计,相较于单一来源的集成电路,该相同方法看似更符合项目初衷。   普通的红色LED既...
用户1017182 2014-05-03 14:19
source insight调用Keil编译器并且定位到错误行
  EDN博客精华文章  作者:mubo   效果图如下: 点击看原图   下面是实现方法:   1、Source Insight -> Options -> Custom Comma...
用户1017182 2014-05-03 14:13
解决source insight输入中文间距大,删除键Del键左右方向光标半个汉字的问题
在默认情况下,往Source Insight里输入中文,字间距相当的大,下面将帮助你解决这个问题。具体设置如下:1.Options->Style Properties2. 在左边Style Na...
用户1017182 2013-07-06 10:33
评论:@汽车电子设计之路 博客中提到的“功率Mosfet参数介绍”
好...
我要评论
1
12
关闭 站长推荐上一条 /2 下一条