STM32程序跳转设置和编程

本章主要介绍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放入相应地址中,如下所示:

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

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F3和F4的程序模板在一些方面是相似的,但也有一些重要的差异。 首先,它们都属于STMicroelectronics的STM32系列微控制器,都基于ARM Cortex-M内核,并且使用相同的开发工具和编程语言(如C语言)进行开发。 其次,它们的程序模板在基本结构上是相似的。无论是STM32F3还是F4,通常都由启动代码、中断向量表、系统初始化函数、主程序和其他功能模块构成。这些模块的目的是确保系统正确初始化,并且能够处理中断、执行主程序,并提供各种功能。 然而,由于STM32F3和F4在硬件和性能方面存在差异,它们的程序模板在某些方面也会有所不同。 首先,它们的启动代码可能会有所不同。启动代码负责初始化芯片的时钟、中断向量表等设置。由于STM32F3和F4具有不同的外设和功能,它们的启动代码可能会针对特定芯片进行一些差异化的设置。 其次,它们的系统初始化函数可能会不同。由于STM32F3和F4具有不同的外设和功能,它们的系统初始化函数可能会针对特定芯片进行一些特定的初始化设置,以确保各个外设正常工作。 最后,它们的中断向量表可能会有所不同。中断向量表用于存储中断处理函数的地址,以便系统在收到中断请求时能够跳转到正确的处理函数。由于STM32F3和F4的中断控制器和中断请求源可能会有所不同,它们的中断向量表可能会存在一些差异。 综上所述,虽然STM32F3和F4的程序模板在基本结构上是相似的,但由于硬件和功能的差异,它们在某些方面可能会有所不同。对于特定的应用程序,开发者应该选择适合其硬件平台的正确程序模板,并进行相应的定制和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值