ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

STM8 自带 BootLoader 串口烧录程序(STM8AF624x)

2020-12-22 16:01:15  阅读:308  来源: 互联网

标签:烧录 FLASH Flash STM8 串口 MCU BootLoader 库函数


一、进入BootLoader模式

根据STM8的资料可以知道,进入BootLoader的方法只有两种:

  1. 空芯片(Flash首地址内容不是0x82或0xAC),上电后即可进入BootLoader模式。
  2. OPTION配置参数地址 487Eh = 0x55 , 787Fh = 0xAA,复位后会进入BootLoader模式。

二、写入OPTION配置参数

通过Flash写入的方式将地址 487Eh787Fh写入0x550xAA即可,通过MCU执行一次Flash写入。

1、使用库函数

此方法只适用于可以使用库函数的MCU,记得引用库的头文件 stm8s_flash.h,若MCU不能使用库函数可以使用寄存器方法。

 /* 定义Flash编程时间 */
 FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
  /* 解锁Flash */
 FLASH_Unlock(FLASH_MEMTYPE_DATA);
 FLASH_ProgramByte(0x487E,0x55);
 FLASH_ProgramByte(0x487F,0xAA);
 FLASH_Lock(FLASH_MEMTYPE_DATA);

2、使用寄存器

由于部分STM8芯片没有标准库的支持,导致不能使用 stm8s_flash 库函数,以下提供一个寄存器的方式写OPTION配置参数的方法:

  /*解锁Flash*/
  do
  {
      FLASH_DUKR = 0xAE;
      FLASH_DUKR = 0x56;      
  }
  while(!(FLASH_IAPSR & 0X08));
  
  /*对选项字节进行写操作使能*/
  FLASH_CR2 = 0X80;
  /*互补控制寄存器*/
  FLASH_NCR2 = 0X7F;

  /*写入OPTION内容*/
  *((unsigned char *)0x487E) = 0x55;
  *((unsigned char *)0x487F) = 0xAA;
  
  /*等待写结束*/
  while(!(FLASH_IAPSR & 0x04));

三、硬件连接方式

这里我们使用串口模块来连接MCU,这里需要注意,串口模块需要引出RSTCST引脚。


若串口没有RSTCST引脚则需要手动复位MCU,而且需要在复位后1秒内使用软件连接MCU。

四、烧录程序

MCU连接好串口后,将串口模块连至电脑,打开 STMFlashLoader Demo.exe 软件。

STMFlashLoader Demo下载地址:FLASHER-STM8


选择好串口号、波特率等参数。


根据MCU的Flash容量选择Target


选择需要下载的hex文件


下载完成

若重新下载需要重新插拔串口模块,并重新打开软件重复以上操作。

标签:烧录,FLASH,Flash,STM8,串口,MCU,BootLoader,库函数
来源: https://blog.csdn.net/zhangzejin3883/article/details/109766786

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有