|
STM32L431RCT6 从用户代码区跳转使用内置system memory bootloader 无效。 1. 跳转代码如下,这个代码 可以在STM32F407VET6上正常跳转 内置的bootloader 并且STM32CubeProgrammer 连接更新程序。 static void JumpToBootloader(void) { uint32_t i=0; void (*SysMemBootJump)(void); /* 声明一个函数指针 */ __IO uint32_t BootAddr = 0x1FFF0000; /* F407系统BootLoader地址 */ /* 关闭全局中断 */ DISABLE_INT(); /* 关闭滴答定时器,复位到默认值 */ SysTick->CTRL = 0; SysTick->LOAD = 0; SysTick->VAL = 0; /* 设置所有时钟到默认状态,使用HSI时钟 */ RCC_DeInit(); /* 关闭所有中断,清除所有中断挂起标志 */ for (i = 0; i < 8; i++) { NVIC->ICER[i]=0xFFFFFFFF; NVIC->ICPR[i]=0xFFFFFFFF; } /* 使能全局中断 */ ENABLE_INT(); /* 跳转到系统BootLoader,首地址是MSP,地址+4是复位中断服务程序地址 */ SysMemBootJump = (void (*)(void)) (*((uint32_t *) (BootAddr + 4))); /* 设置主堆栈指针 */ __set_MSP(*(uint32_t *)BootAddr); /* 在RTOS工程,这条语句很重要,设置为特权级模式,使用MSP指针 */ __set_CONTROL(0); /* 跳转到系统BootLoader */ SysMemBootJump(); /* 跳转成功的话,不会执行到这里,用户可以在这里添加代码 */ while (1) { } } 2. 1中代码 使用在STM32L431RCT6 F无效果。STM32CubeProgrammer 提示设备连接超时无响应。 我板上有BOOT 按键,使用BOOT按键 硬件方式 可以 进入 内置bootloader 并连接STM32CubeProgrammer 更新程序。 3. 已查 STM32L431RCT6 系统BootLoader地址 也是 0x1FFF0000; 也不是双BANK芯片。麻烦是否有接触过个芯片 从用户代码区直接跳转到内置BOOTLOADER的 成功过的 帮忙看看,谢谢 |
FATFS 分区最大文件数量是多少
串口DMA收发出现ORE错误
请问各位一下stm32L431rct6这款芯片,官方有没有停产?
Discover Endless Word Challenges With Wordle Unlimited Every Day
STM32L496ZG 通过串口驱动 SIM7022 NB-IoT 模组无法注册网络
将 TIM2 用作 TIM5、TIM1 和 TIM8 的时序控制器
Pokerogue: A Browser-Based Roguelike Pokémon Game That Hooks You
STM32U5系列上电时序
STM32L476项目运行提示没有crypto.h
STM32生产产地和版本
微信公众号
手机版