在学习写一个Bootloader的过程中,想要通过串口助手直接把bin文件发到STM32并写入到APP_FLASH。
35kB的bin文件,只能成功写入十几个字节,还每次都不一样多。
把波特率从115200降低到9600时能写入6kB数据,继续降低到2400时能写入7kB数据到Flash。
还请大佬指教~
userapplen =0;
timeout = HAL_MAX_DELAY;
/* Clean the input path */
__HAL_UART_FLUSH_DRREGISTER(&huart1);
uint32_t data32[UART_BUF_SIZE / 4];
HAL_StatusTypeDef state;
HAL_FLASH_Unlock();
while(1)
{
state = HAL_UART_Receive(&huart1, uart_buf, 4, 5000);
memcpy(data32, uart_buf, 4);
// 关闭总中断
__disable_irq();
// 写Flash
HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, APPLICATION_ADDRESS + userapplen, data32[0]);
printf("Programming\r\n");
// 开启总中断
__enable_irq();
if(state != HAL_OK)
{
HAL_FLASH_Lock();
printf("Programming completed Successfully! %ldBtye\r\n", userapplen += huart1.RxXferCount);
break;
}
userapplen += 4;
} |