bootlodar的學習

youxiaozhe發表於2020-11-26

記錄學習過程中遇到的問題

1.#define的用法
學習

/* 程式跳轉函式 */
typedef void (*Jump_Fun)(void);
void IAP_ExecuteApp (uint32_t App_Addr)
{
  Jump_Fun JumpToApp;

  if ( ( ( * ( __IO uint32_t * ) App_Addr ) & 0x2FFE0000 ) == 0x20000000 )  //檢查棧頂地址是否合法.
  {
    JumpToApp = (Jump_Fun) * ( __IO uint32_t *)(App_Addr + 4);  //使用者程式碼區第二個字為程式開始地址(復位地址)  
    MSR_MSP( * ( __IO uint32_t * ) App_Addr );                  //初始化APP堆疊指標(使用者程式碼區的第一個字用於存放棧頂地址)
    JumpToApp();                                                //跳轉到APP.
  }
}

2020.11.26

相關文章