stm32cubemx IAP升级(二)

stm32cubemx IAP升级- App的制作

板卡:Nucleo-L412
平台:macbook pro
工具:vscode stm32cubemx stm32cubeProgramer cmake toolchain

整体思路

将App设置为从0x08007000地址启动,然后初始化一路串口用作接收上位机的升级数据,再初始化一路i ic设置为从机,用来接收上位记iic升级的数据。接收的数据按包写入Download分区,然后重启,由bootloader将数据copy到App区域,实现升级。

stm32cubemx配置

1、使能uart2并配置DMA
在这里插入图片描述

2、配置iic为从设备,并配置DMA
在这里插入图片描述
在这里插入图片描述
3、配置一个定时器,用来改变led的闪烁频率。
4、修改STM32L412RBTxP_FLASH.ld

/* Specify the memory areas */
MEMORY
{
RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 40K
RAM2 (xrw)      : ORIGIN = 0x10000000, LENGTH = 8K
FLASH (rx)      : ORIGIN = 0x8007000, LENGTH = 50K
}

5、 修改中断向量表值
文件为system_stm32l4xx.c

在这里插入图片描述

编译出来的bin文件,用stm32cubeProgrammer按0x08007000地址烧录进去,配合之前的bootloader就可以跳转到App程序。

我们添加打印

void print_text_message(void)
{
    #ifdef USER_APPLICATION_CODE   
    printf("|------------- Enter Application -------------|\r\n");
    #endif
    #ifdef USER_BOOTLOADER_CODE 
    printf("|------------- Enter BootLoader --------------|\r\n");
    #endif
    printf("\r\n");
    printf("Version: %s %s\r\n",APPCATION_VERSION_DATE,APPCATION_VERSION_TIME);
    printf("\r\n");
    printf("|----------L412 flash toal size 128K----------|\r\n");
    printf("\r\n");
    printf("|============ flash pration table ============|\r\n");
    printf("| name       | offset     | size              |\r\n");
    printf("|---------------------------------------------|\r\n");
    printf("| bootloader | 0x08000000 | 0x00005000   20K  | \r\n");
    printf("| setting    | 0x08005000 | 0x00002000   8K   |\r\n");
    printf("| App        | 0x08007000 | 0x0000C800   50K  |\r\n");
    printf("| download   | 0x08013800 | 0x0000C800   50K  |\r\n");
    printf("|=============================================|\r\n");
}

会打印出
printf(“|------------- Enter Application -------------|\r\n”);

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 无法确定哪个版本是最好的,因为这取决于您的需求和特定的应用。CubeMX的每个版本都有其自己的特点和不同的更新,使其能够满足特定项目的需求。因此,要选择最适合您需求的版本,需要考虑以下因素: 1. 功能:确定您项目所需要的功能,以便找到最适合您的版本。 2. 兼容性:确定您使用的开发板和其他外设是否与您选择的版本兼容。 3. 支持的MCU序列:确定您要使用的MCU是否与所选择的版本兼容。 4. 反馈:查看该版本的用户反馈,以确定其影响因素和可靠性。 总之,选择最适合自己需求的版本,需要针对自己的项目考虑,而且需要确保所选版本可以满足您的要求,以确保项目的平稳进行。 ### 回答2: 针对Cubemx的优化和新特性,每个版本都有不同的改进。在选择Cubemx版本时,应该考虑到自己的需求并查看每个版本的优缺点,才能确定哪个版本是最好的。 例如,老版本的Cubemx可能会有性能问题、稳定性问题等,但对于一些旧型号的微控制器,比如STM32F1xx系列,旧版Cubemx可能会比新版的更兼容。此外,较新的Cubemx版本通常会添加新的功能或特性,并提升了用户的操作体验。但这意味着这些新版本也可能会增加设备的电力和资源消耗,需要更高的计算机性能和更好的硬件支持。 总的来说,哪个版本的Cubemx好,是一个需要权衡不同因素的决定。推荐用户在审核不同版本之间的优缺点后,选择最适合自己需求的版本。 ### 回答3: CubeMX是一款由STMicroelectronics开发的专业嵌入式软件配置工具,同时也是STM32(意法半导体)系列微控制器的官方配置工具。该工具可以大大提高嵌入式系统的开发效率,使代码的编写和维护工作更加简单和高效。 在选择CubeMX的版本时,我们需要考虑以下几个方面: 1. 功能性:不同版本的CubeMX拥有不同的功能和特点,需要根据实际需求选择合适的版本。同时,确定使用的工具版本是否支持要使用的STM32芯片型号以及相关的外设。 2. 兼容性:CubeMX需要和其他软件,如IDE(集成开发环境)和编译器等工具配合使用。我们需要确认使用的版本与其他软件的兼容性是否良好。 3. 稳定性:CubeMX需要进行图形化配置,需要占用计算机资源,对电脑性能有较高的要求。同时,不同版本的稳定性也有所不同,我们需要根据实际情况选择较为稳定的版本。 总体来说,选择合适的CubeMX版本需要综合考虑以上多个方面,确定哪个版本好。建议选择最新的版本,以兼顾功能和稳定性。同时,需要注意的是,无论选择哪个版本的CubeMX,都需要进行深入的学习和了解,才能充分发挥其优势,提高开发效率。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值