久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: STM32-IAP項目代碼 使用中 [打印本頁]

作者: eliucheng    時間: 2019-4-28 17:57
標題: STM32-IAP項目代碼 使用中
項目中正在使用的 STM32系列單片機 的遠程IAP使用方式,從此刷機不用再拆機!

單片機源程序如下:
  1. /*******************************************************************************
  2. ** 功能:         遠程燒寫程序的啟動文件
  3. *******************************************************************************/
  4. #include "stm32boot.h"
  5. #include "EEPROM.h"
  6. /* 類型聲明 -----------------------------------------------------------------*/
  7. typedef void (*pFunction)(void);
  8. /* 變量 ----------------------------------------------------------------------*/
  9. pFunction Jump_To_Application ;
  10. uint32_t JumpAddress;
  11. #define ApplicationAddress 0x8003000
  12. void NVIC_Configuration(void);


  13. /*******************************************************************************
  14.   * @函數名稱        main
  15.   * @函數說明 主函數
  16.   * @輸入參數 無
  17.   * @輸出參數 無
  18.   * @返回參數 無
  19. *******************************************************************************/
  20. extern __IO unsigned long time32_incr;
  21. unsigned long portGetTickCnt(void)
  22. {
  23. //        time32_incr = SysTick->VAL;
  24.         return time32_incr;
  25. }

  26. void Sleep(unsigned int time_ms)
  27. {
  28.     unsigned long end = portGetTickCnt() + time_ms;
  29.     while ((signed long)(portGetTickCnt() - end) <= 0)
  30.         ;
  31. }



  32. void CloseIrq(void)
  33. {
  34.         SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;//關閉SYSTICK中斷
  35.         DMA_ITConfig(DMA1_Channel7, DMA_IT_TC, DISABLE);       //使能DMA通道4傳輸完成中斷
  36.         DMA_ITConfig(DMA1_Channel7, DMA_IT_TE, DISABLE);
  37.         USART_ITConfig(USART2, USART_IT_IDLE, DISABLE);
  38.         USART_DeInit(USART2);
  39.         DMA_DeInit(DMA1_Channel7);
  40.         DMA_DeInit(DMA1_Channel6);
  41. }


  42. int main(void)
  43. {
  44.         int i=1200;
  45.         u16 FLAG = 0;
  46.   /* Enable PWR and BKP clocks */
  47.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
  48.   /* Allow access to BKP Domain */
  49.     PWR_BackupAccessCmd(ENABLE);
  50.     FLASH_Unlock();
  51.         UART2_Configuration();
  52.         SysTick_Init();
  53.         NVIC_Configuration();
  54.         Sleep(20);
  55.         printf("bootv2.0-20181210\r\n");
  56.         while (i--)
  57.         {
  58.                 Communication();
  59.                 Sleep(20);
  60.         }
  61.         eeprom_read_block(&FLAG, PROGRAMS_ADDR, 2);
  62.         
  63.    if (FLAG == 0xE0E0)
  64.    {

  65. //        DevAddr = 1;
  66. //        NVIC_Configuration();
  67. //        FLASH_Unlock() ;
  68. //        //串口初始化
  69. //        UART2_Configuration();0
  70. //        //系統時基啟動
  71. //       // SysTick_Init();
  72. //               
  73. //                led_on();

  74.          while (1)
  75.         {
  76.             Communication();
  77.         }
  78.     }
  79.     //否則執行用戶程序
  80.     else
  81.     {
  82.         //判斷用戶是否已經下載程序,因為正常情況下此地址是棧地址。
  83.         //若沒有這一句的話,即使沒有下載程序也會進入而導致跑飛。
  84.                 FLASH_Lock();
  85.                
  86.         if (((*(__IO uint32_t*)ApplicationAddress) & 0x2FFE0000 ) == 0x20000000)
  87.         {
  88.             JumpAddress = *(__IO uint32_t*) (ApplicationAddress + 4);
  89.             Jump_To_Application = (pFunction) JumpAddress;
  90.             //初始化用戶程序的堆棧指針
  91.             __set_MSP(*(__IO uint32_t*) ApplicationAddress);
  92.                         printf("jump to app\r\n");
  93.                         CloseIrq();
  94.             Jump_To_Application();
  95.         }
  96.         else
  97.         {
  98.                         u16 data = 0xE0E0;
  99.             eeprom_write_block(&data, PROGRAMS_ADDR, 2);
  100.                         printf("no app wait program\r\n");
  101.             SoftReset();
  102.         }
  103.     }
  104.     while (1)
  105.     {
  106.     }
  107. }
  108. #define Set_NVIC(Channel,Preemption,Sub,Cmd) { NVIC_InitStructure.NVIC_IRQChannel = Channel; \
  109.                                                    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = Preemption; \
  110.                                                    NVIC_InitStructure.NVIC_IRQChannelSubPriority = Sub; \
  111.                                                    NVIC_InitStructure.NVIC_IRQChannelCmd = Cmd; \
  112.                                                    NVIC_Init(&NVIC_InitStructure); }

  113.                                                                                                    
  114.                                                                                                    
  115.                                                                                                    
  116.                                                 
  117. //************************************************************************************************
  118. //**名 稱:NVIC_Init
  119. //**說 明:中斷優先級初始化
  120. //**形 參:無
  121. //**返 回 值:無
  122. //************************************************************************************************
  123. void NVIC_Configuration (void)
  124. {
  125.     NVIC_InitTypeDef NVIC_InitStructure;
  126.    
  127.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //4個搶占優先級,4個從優先級
  128.     /* Configure the SysTick handler priority */
  129.     NVIC_SetPriority(SysTick_IRQn, 0);//SysTick中斷優先級設置 //非實時任務優先級最低 3,0
  130.     Set_NVIC(USART2_IRQn , 2, 0,ENABLE) ;
  131. }
  132. /*******************************文件結束***************************************/
復制代碼

所有資料51hei提供下載:
STM32遠程升級.7z (1.08 MB, 下載次數: 33)



作者: ontheroad    時間: 2019-6-11 10:11
正在學習STM32 IAP 在線升級!希望能有所借鑒!
作者: 156231    時間: 2019-6-11 14:59
很不錯
作者: 88290398    時間: 2019-9-26 16:00
不錯 不錯




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人99久久亚洲综合精品 | 九九热最新地址 | 99国产精品视频免费观看一公开 | 久久精品国产一区 | 91精品国产91久久综合桃花 | 国产精品成人在线观看 | 亚洲精品久久久久久下一站 | 99视频在线播放 | 欧美一级黄色片 | 国产小u女发育末成年 | 国产精品欧美一区二区三区 | 99re热精品视频 | 亚洲视频二区 | 激情av| 午夜专区 | 日本三级电影在线看 | 中文字幕亚洲一区二区va在线 | 永久av| 久久久黑人 | 国产精品99视频 | 国产精品欧美日韩 | 九七午夜剧场福利写真 | 一区二区国产在线观看 | av网站在线播放 | 国产 日韩 欧美 在线 | 91精品国产色综合久久不卡蜜臀 | 国产精品日韩欧美一区二区三区 | 伊人久久综合 | 午夜免费在线观看 | 日韩一区二区在线播放 | 欧美成人h版在线观看 | 国产2区| 五月天婷婷丁香 | 成人伊人网 | 亚洲精品毛片av | 中文字幕在线观看一区二区 | 精品96久久久久久中文字幕无 | 国产成人精品久久二区二区91 | 成人精品一区二区三区中文字幕 | 国产一区在线免费观看 | 日本免费一区二区三区四区 |