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

发布者:bin0990最新更新时间:2019-12-11 来源: eefocus关键字:STM8  手动复位  Bootloader  串口下载 手机看文章 扫描二维码
随时随地手机看文章

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

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

STM8S是这样:

STM8L是这样:

还有关于复位是否运行自带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); 

 

这是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); 

}


关键字:STM8  手动复位  Bootloader  串口下载 引用地址:STM8不用手动复位进入自带Bootloader方法(串口下载)

上一篇:ST Visual Programmer批量烧写教程
下一篇:STM8L学习笔记-GPIO端口操作(一)

推荐阅读最新更新时间:2024-11-09 20:14

STM8与汇编语言(1)(2)(3)
STM8与汇编语言(1) 不知是心血来潮,还是其它因素,突然又想起玩汇编语言了。这几年也没少跟单片机打交道,包括51系列,430系列,ARM系列,但都是用C语言来开发。不过由于使用C语言,实际上对这些CPU的了解还是不够深刻,当然除了51之外,因为那是我多年前曾经用汇编开发过的芯片。尽管当今C语言已经在嵌入式产品的开发过程中成为主流,但我个人依然认为,要想真正了解CPU的特点,还得用汇编语言。不知道这种观点是对还是错,也许是因为自己从硬件做起,写过机器码,用汇编语言做过优化,因此对汇编语音有一种特殊的偏爱。 51系列的芯片用多了,感觉有时写起程序来不太方便,因此总想寻找一些其它的8位单片机玩玩,正好手头有一个ST的三合一开
[单片机]
STM8 自动唤醒(AWU)
简介 AWU是用来当MCU进入低功耗的活跃停机(Active Halt)模式时提供一个内部的唤醒时间基准。该时间基准的时钟是由内部的低速RC振荡器时钟(LSI)或者通过预分频的HSE晶振时钟来提供的。 STM8的LSI时钟测量 在使用LSI低速内部时钟时,为了确保最好的精度,它的频率可以通过TIM3的输入捕捉1来测定。 (表18:AWU时钟框图) 注意:LS低速时钟源的选择是通过编程CKAWUSEL选项位来实现的。详见时钟控制器章节。 AWU操作 为了使用STM8的AWU功能,按顺序执行如下步骤: 1.使用AWU_CSR寄存器的MSR位和TIM3的输入捕捉通道1来检测LS的时钟频率; 2.通过写AWU_APR的APR 位来定义
[单片机]
<font color='red'>STM8</font> 自动唤醒(AWU)
stm8开发环境和stlink驱动在win8下安装教程
将ST-LINK-V2插到电脑上之后会发现上面的D1灯一直在闪烁,这表示此时stlink还没被电脑识别。下载驱动程序: http://pan.baidu.com/s/1dDGHvot 如果连接失效可以百度,有的是。之后就是安装问题。在我的电脑(计算机)上右键,选“管理”,“设备管理器”,发现软件设备中有一个带黄叹号的图标,正是我们未识别的stlink,双击后在属性中选择“更新驱动”,选择自动寻找,会发现出现数字签名问题。下面我们就来解决数字签名问题: 鼠标移动到右侧边处悬停一会出现WIN8右侧边栏--选择设置--选择更改电脑设置--常规--最下面高级启动立即重启--重启电脑中.....选择疑难解答--选择高级选项--选择
[单片机]
STVP编译时出现“Error creating process for executable cxstm8”
STVP在编译程序时出现如下问题: ----------- Project d164060 - STM8 Cosmic - Configuration Debug ------------- Removing intermediate files ... Done! ----------- Project d164060 - STM8 Cosmic - Configuration Debug ------------- Compiling adc.c... cxstm8 +debug -pxp -no -l +mods0 -pp -i C:Program Files (x86)STMicroelectronicsCXS
[单片机]
STVP编译时出现“Error creating process for executable cxstm8”
STM32的BootLoader升级
从串口升级固件 ①Jump_To_Application = (pFunction)(*(vu32*) (IAPSTART + 4)); __MSR_MSP(*(vu32*) IAPSTART); Jump_To_Application(); 跟踪__MSR_MSP(一般这个函数都在库文件里有,跟踪不到就用搜索找)找到汇编函数为 __MSR_MSP MSR MSP, r0 ; set Main Stack value BX r14 ②//跳转到应用程序段 //appxaddr:用户代码起始地址. void iap_load_app(u32 appxaddr) { if(((*(vu32*)appxa
[单片机]
STM8使用SPI通信需要注意的几个问题
概述: 在使用STM8L101F3单片机,SPI通信读取三轴传感器ADXL362数据时,出现了一系列的问题,在这里做个笔记,也希望可以给大家一个小的参考。 问题一: 在SPI初始化过程中,没有初始化MISO,MOSI,SCLK三个引脚,导致在通信过程中写数据读数据出现问题。所以在这里贴出测试后可以正常运行的SPI初始化代码。(STM8L101F3,使用官方标准库) #include stm8l10x.h #include stm8l10x_spi.h #include stm8l10x_gpio.h /***************************SPI相关定义*****************
[单片机]
STM8 中关于PWM1 和 PWM2的区别
STM8中PWM1和PWM2模式是时钟输出PWM波形控制的一个必选参数,使用库函数原型如下: void TIMx_OC2Init(TIM2_OCMode_TypeDef TIM2_OCMode, TIM2_OutputState_TypeDef TIM2_OutputState, uint16_t TIM2_Pulse, TIM2_OCPolarity_TypeDef TIM2_OCPolarity) 函数中的第一个参数TIM2_OCMode_TypeDef就是指定当前的 PWM波形模式是PWM1或PWM2,关于这两者的区别通俗点讲就是: PWM1中空控
[单片机]
IAR+STM8——GPIO
第二天,从最基本的IO操作开始学习。在STM上IO绝大多数是GPIO。 刚开始学习,测试程序不要搞复杂,越简单越不容易出错。下面是代码,没有使用STM8官方固件库。 // GPIO测试 #i nclude iostm8s207sb.h #define LED1_FLASH PD_ODR_ODR3 = !PD_ODR_ODR3 // 开发板上的LED1接在PD3上 void delay(unsigned int count) { while(count--); } void GPIO_init(void) { PD_DDR = 0x08; // 配置PD端口的方向寄存器PD3输出 PD_CR1 = 0x08; // 设置P
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved