added jump_to_systembootloader
This commit is contained in:
@@ -285,6 +285,48 @@ void ULOG_SendLPUART(ulog_level_t level, char *msg) {
|
||||
HAL_UART_Transmit(&hlpuart1, (const uint8_t*)ulog_send_buffer, send_length, LOG_TIMEOUT);
|
||||
}
|
||||
|
||||
void JumpToBootloader(void)
|
||||
{
|
||||
#define conBootloadAddress 0x1FF09800
|
||||
|
||||
void (*SysMemBootJump)(void);
|
||||
uint8_t i;
|
||||
|
||||
__disable_irq();
|
||||
// Reset USB
|
||||
//USBD_DeInit(&hUsbDeviceHS);
|
||||
|
||||
//De-init all peripherals
|
||||
//HAL_ADC_DeInit(&hadc1);
|
||||
|
||||
// Disable Systick
|
||||
SysTick->CTRL = 0;
|
||||
SysTick->LOAD = 0;
|
||||
SysTick->VAL = 0;
|
||||
|
||||
// Reset clock to default
|
||||
HAL_RCC_DeInit();
|
||||
|
||||
// Clear all interrupt bits
|
||||
for (i = 0; i < sizeof(NVIC->ICER) / sizeof(NVIC->ICER[0]); i++)
|
||||
{
|
||||
NVIC->ICER[i] = 0xFFFFFFFF;
|
||||
NVIC->ICPR[i] = 0xFFFFFFFF;
|
||||
}
|
||||
|
||||
__enable_irq();
|
||||
|
||||
SysMemBootJump = (void (*)(void)) (*((uint32_t *) (conBootloadAddress + 4)));
|
||||
__set_MSP(*(uint32_t *)conBootloadAddress);
|
||||
SysMemBootJump();
|
||||
|
||||
while (1); // Just in case...
|
||||
}
|
||||
|
||||
|
||||
void DataClbk_cls_usb_JumpToBootloader(void* msg, uint32_t length) {
|
||||
JumpToBootloader();
|
||||
}
|
||||
/* USER CODE END 4 */
|
||||
|
||||
/* MPU Configuration */
|
||||
|
||||
Reference in New Issue
Block a user