当前位置: 首页 > news >正文

stm32 bootloader跳转程序设计

文章目录

  • 1、bootloader跳转程序设计
    • (1)跳转程序
    • (2)、app程序中需要注意
      • <1>、在keil中ROM起始地址和分配的空间大小
      • <2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址
      • <3>、main函数中使能中断
  • 总结:

1、bootloader跳转程序设计

(1)跳转程序

pFunction JumpToApplication;
uint32_t JumpAddress;
void BootLoad_Jump(void)
{
/* Check Vector Table: Test if user code is programmed starting from address
"APPLICATION_ADDRESS" */
if (((*(__IO uint32_t*)APPLICATION_ADDRESS) & 0x2FFE0000 ) == 0x20000000)
{   
JumpAddress = *(__IO uint32_t*) (APPLICATION_ADDRESS+4); // 取中断向量表中的复位中断地址
HAL_Delay(100);__disable_irq();  //关闭所有中断,在跳转后使能中断
//    SCB->VTOR = FLASH_BASE |VECT_TAB_OFFSET;
JumpToApplication = (pFunction) JumpAddress;
/* Initialize user application's Stack Pointer */
__set_MSP(*(__IO uint32_t*) APPLICATION_ADDRESS);
JumpToApplication();}
}

(2)、app程序中需要注意

<1>、在keil中ROM起始地址和分配的空间大小

在这里插入图片描述

<2>、在system_stm32f4xx.c中设置VECT_TAB_OFFSET为需要偏移的地址

在这里插入图片描述

<3>、main函数中使能中断

在这里插入图片描述

总结:

Bootloader里面主要是
1、设置bootloader和app的空间
2、接收编译好的app的bin文件,写入flash
3、实现跳转
App里面主要修改的地方是
1、 ROM起始地址和分配的空间大小
2、 重定向中断向量
3、 生成bin文件
这里就是整个程序执行的流程

http://www.lryc.cn/news/449800.html

相关文章:

  • 科技赋能环保:静电与光解技术在油烟净化中的卓越应用
  • FCA-FineBI试卷答案
  • Spring - @Import注解
  • 新能源汽车储充机器人:能源高效与智能调度
  • 【Linux网络】详解TCP协议(2)
  • STM32DMA学习日记
  • 【高性能内存池】page cache 5
  • Vue 3 魔法揭秘:CSS 解析与 scoped 背后的奇幻之旅
  • 如何获取钉钉webhook
  • 网页WebRTC电话和软电话哪个好用?
  • MySQL Mail服务器集成:如何配置发送邮件?
  • 【Rockchip系列】官方函数:imcopy
  • Matlab实现鲸鱼优化算法优化回声状态网络模型 (WOA-ESN)(附源码)
  • 迈威通信闪耀工博会,以创新科技赋能工业自动化
  • C# DotNetty客户端
  • 4G模组SIM卡电路很简单,但也要注意这些坑
  • 常见电脑品牌BIOS设置与进入启动项快捷键
  • C语言中的日志机制:打造全面强大的日志系统
  • 局域网广域网,IP地址和端口号,TCP/IP 4层协议,协议的封装和分用
  • LabVIEW项目编码器选择
  • Spring Boot实现房产租赁业务逻辑
  • 汽车3d动画渲染选择哪个?选择最佳云渲染解决方案
  • 火语言RPA流程组件介绍--网页/元素截图
  • VSCode编程配置再次总结
  • 银行管理系统
  • 极狐GitLab 17.4 重点功能解读【四】
  • [每日一练]利用自连接实现数量查询
  • Linux云计算 |【第四阶段】RDBMS1-DAY3
  • 初始MYSQL数据库(8)—— JDBC编程
  • Vue $router.push打开新窗口