找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3617|回复: 5
收起左侧

STM8s的IAP升级源程序 bootloader与APP

  [复制链接]
ID:125378 发表于 2019-10-9 17:36 | 显示全部楼层 |阅读模式
测试有效,仅供参考

单片机源程序如下:
  1. /*****
  2. Copyright 2016-2020 Alex.Fang  All rights reserved.

  3. Header:   stm8s105c6t6 IAP code
  4. File Name: main.c
  5. Author: Alex.Fang
  6. Date: 2016-07-22

  7. 免责声明:
  8. 此代码你可以用来学习和交流。不得商用!应用此程序酿成事故由你自己承担!
  9. 本人不负责维护和支持此代码!如有疑问和看不懂别来烦我!  ^_^
  10. openedv论坛好友可以随便下载和转给他人参阅学习。
  11. 版权遵循 = GPL

  12. Disclaimer of liability:
  13. This code you can use to learn and communicate. No commercial!
  14. Use this procedure to cause accidents by yourself!
  15. I am not responsible for the maintenance and support of this code!
  16. If you have any questions and cannot read don't bother me! ^_^
  17. Openedv forum friends can easily download and
  18. transfer to other people see learning.
  19. copyright = GPL

  20. ********/


  21. /* Includes ------------------------------------------------------------------*/

  22. #include <string.h>
  23. #include <stdio.h>
  24. #include "stm8s.h"
  25. #include "stm8s_clk.h"
  26. #include "main.h"
  27. //#include "stm8s_wwdg.h"
  28. #include "delay.h"
  29. #include "flash.h"
  30. #include "stm8s_flash.h"

  31. #include "config.h"
  32. #include "IO_config.h"

  33. #include "crc16.h"
  34. #include "xmodem.h"

  35. #include "stm8s_uart2.h"

  36. #include "uart2.h"
  37. //#include "stm8s_tim2.h"

  38. //#include "wwdg.h"

  39. //#define NGI()     _asm("sim");    /* 禁止全局中断 */
  40. //#define EGI()     _asm("rim");    /* 使能全局中断 */
  41. //#define WFI()     _asm("halt");   /*进入到低功耗模 WFI */


  42. /* Private defines -----------------------------------------------------------*/
  43. /* Private function prototypes -----------------------------------------------*/
  44. /* Private functions ---------------------------------------------------------*/

  45. //address for GO command
  46. //TFunction GoAddress;



  47. void STM8_CLK_Init(void)
  48. {
  49.                 CLK_DeInit();//复位时钟寄存器
  50.     CLK_HSICmd(ENABLE);//HSI = 16MHz
  51.     CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //f_psc = 16MHz/1
  52.                
  53.                 //CLK_ClockSecuritySystemEnable();//开启时钟安全系统
  54.     //enableInterrupts();
  55. }


  56. void system_init(void)
  57. {
  58.         STM8_CLK_Init();
  59.         FLASH_DeInit();
  60.         Init_GPIO();
  61.         Init_UART2();

  62. }


  63. void main(void)
  64. {        
  65.   //_asm("sim");//关全部中断
  66.         
  67.         disableInterrupts();
  68.         system_init();
  69.         //_asm("rim");//开全部中断
  70.         enableInterrupts();
  71.         
  72.         
  73.         uart2_data("\r\n\r\n",4);
  74.         uart2_data("Bootloader Start...\r\n",21);        
  75.         uart2_data("Ver=20160722_1.0\r\n",18);
  76.         disableInterrupts();
  77.         

  78.         //unlock_PROG();        
  79.   //unlock_DATA();
  80.         
  81.         //Print("goto app...\r\n");
  82.         //goto_app();        
  83.         //Print("Failed!\r\n");
  84.         //waiting_time_count=200;
  85.   Xmoden_STate = IDLE;
  86.         //RS232_Tran_Chr(NAK);
  87.         disp_menu();
  88.   while (1)
  89.   {
  90.                 RS232_ISR();
  91.                 RS232_Rec_Xmodem();
  92.                
  93.   }//end while
  94.   
  95. }
复制代码

所有资料51hei提供下载:
bootloader.7z (3.99 MB, 下载次数: 86)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:642557 发表于 2019-11-16 17:04 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:642557 发表于 2019-11-17 12:36 | 显示全部楼层
能简单说一下如何使用吗?
回复

使用道具 举报

ID:125378 发表于 2019-11-26 15:44 | 显示全部楼层
jeeseliu 发表于 2019-11-17 12:36
能简单说一下如何使用吗?

先把BootLoader1程序烧进板子,然后用上位机给MCU发送APP代码,让mcu自己写进flash里面去执行
回复

使用道具 举报

ID:50961 发表于 2020-1-5 15:51 | 显示全部楼层
上位机工具有提供吗?
回复

使用道具 举报

ID:281113 发表于 2020-6-19 19:57 | 显示全部楼层
学习了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表