STM32 USB编程,跳转到DFU的bootloader

Posted

技术标签:

【中文标题】STM32 USB编程,跳转到DFU的bootloader【英文标题】:STM32 USB programming, jump to bootloader for DFU 【发布时间】:2021-06-06 20:47:57 【问题描述】:

我在 STM32L462xx 上设置设备以通过 USB 闪烁而无法访问 BOOT0 引脚时遇到问题。离开 ST 网站上的教程似乎并没有完成任务。有没有人成功通过软件将 STM32L4 设置为 bootloader 模式?

https://stm32f4-discovery.net/2017/04/tutorial-jump-system-memory-software-stm32/

【问题讨论】:

欢迎来到 Stack Overflow,感谢其他人可能会觉得有用的信息。不过,您似乎已经在问题区域中发布了答案。请写一个格式正确的问题,描述您正在尝试做的事情以及您面临的问题,然后随时发布您自己问题的答案。 【参考方案1】:

我能够将设备设置为可以使用以下代码使用 STM32Cube Programmer 或 DFU-util 程序进行编程的模式。这在一定程度上是对该程序员解决方案的信号提升,该解决方案违反了他们网站上的 ST 教程,该教程说如何将设备内存跳转到引导加载程序以进行 USB 编程

https://github.com/markusgritsch/SilF4ware/blob/94bb679119a0b9879fedc62a5e22f40623433242/SilF4ware/drv_reset.c

void jump_to_bootloader(void)

    __enable_irq();
    HAL_RCC_DeInit();
    HAL_DeInit();
    SysTick->CTRL = SysTick->LOAD = SysTick->VAL = 0;
    __HAL_SYSCFG_REMAPMEMORY_SYSTEMFLASH();

    const uint32_t p = (*((uint32_t *) 0x1FFF0000));
    __set_MSP( p );

    void (*SysMemBootJump)(void);
    SysMemBootJump = (void (*)(void)) (*((uint32_t *) 0x1FFF0004));
    SysMemBootJump();

    while( 1 ) 

【讨论】:

以上是关于STM32 USB编程,跳转到DFU的bootloader的主要内容,如果未能解决你的问题,请参考以下文章

STM32 USB DFU功能

STM32 bluepill USB 引导加载程序 DFU

STM32 demo USB-DFU boot loader如何检查是不是加载了用户代码?

STM32 DFU模式烧录代码

STM32CubeMX学习笔记(50)——USB接口使用(DFU固件升级)

STM32CubeMX学习笔记(50)——USB接口使用(DFU固件升级)