STM32 bootloadr+app串口无法正常使用

问题:bootloader里面使用到串口时,导致app里的串口无法发生串口数据

解决方式:在跳转到APP时,取消串口外设

HAL_UART_DeInit(&huart1);//取消外设,避免APP 里用到串口时无法正常使用

取消外设放在app初始化时也没有作用,亲测必须放在跳转前取消采有作用

void Jump_to_APP(uint32_t app_addr)
{
    uint32_t JumpAddress;
	 // printf("jump to app: %#x\r\n", FLASH_APP_ADDR);
	  
    /* Test if user code is programmed starting from address "APPLICATION_ADDRESS" */
    if (((*(volatile uint32_t*)FLASH_APP_ADDR) & 0x2FFE0000 ) == 0x20000000)// 上面的值是取出FLASH_APP_ADDR里面的值来
    {
        __set_PRIMASK(1);                                             //关总中断  0打开总中断
        JumpAddress = *(volatile uint32_t*) (FLASH_APP_ADDR + 4);    
        Jump_To_Application = (pFunction) JumpAddress;
        printf("jump %#x success \r\n",FLASH_APP_ADDR);
		HAL_UART_DeInit(&huart1);//取消外设,避免APP 里用到串口时无法正常使用
        __set_MSP(*(volatile uint32_t*) FLASH_APP_ADDR);             //设置SP指针,复位指针
        Jump_To_Application();                                       //开始跳转
    }
    else
    {
        printf( "erorr [0x%08x]\r\n",(*(volatile uint32_t*)FLASH_APP_ADDR) );
    }  
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值