本章主要介绍STM32程序跳转的设置和编程,分两部分,一是Bootloader程序的设置,二是应用程序的设置,下面将分别介绍其设置。

一、Bootloader程序设置

     在Bootloader中,当把应用程序都下载到Flash内存中后,Bootloader需要跳转到应用程序中去。如下是经测试过的代码:

#define APP_FLASH_ADDRESS (0x8006000)

typedef  void (*pFunction)(void);
pFunction Jump_To_Application;
uint32_t JumpAddress;

void JumpToApp(void)
{
    /* Check if valid stack address (RAM address) then jump to user application */
    if (((*(__IO uint32_t*)APP_FLASH_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
    {
        __disable_irq();
       /* Jump to user application */
       JumpAddress = *(__IO uint32_t*) (APP_FLASH_ADDRESS + 4);
       Jump_To_Application = (pFunction) JumpAddress;
       /* Initialize user application's Stack Pointer */
       __set_MSP(*(__IO uint32_t*) APP_FLASH_ADDRESS);
       Jump_To_Application();
    }
}

 

二、应用程序设置

    需要在应用程序工程中修改system_stm32f10x.c的应用Flash的起始地址值,该值要与Bootloader中定义的应用程序起始Flash要一致,如下所示:

#define FLASH_BASE            ((uint32_t)0x08006000) /*!< FLASH base address in the alias region */

void SystemInit (void)
{

...

    SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */

}

然后要在 keil工具中设置Flash和RAM的分区,这样keil工具在生成hex代码时会将CODE和DATA放入相应地址中,如下所示:

STM32程序跳转设置和编程

最后勾选上生成HEX文件,如下所示:

STM32程序跳转设置和编程

相关文章:

  • 2021-07-06
  • 2021-12-03
  • 2022-12-23
  • 2021-11-06
  • 2021-07-30
  • 2021-12-01
猜你喜欢
  • 2021-11-11
  • 2021-09-06
  • 2022-12-23
  • 2021-11-01
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案