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 demo USB-DFU boot loader如何检查是不是加载了用户代码?