void net_reset_stme32f_mcu(void)
{
__set_PRIMASK(1);
if(((*(vu32*)(APP_START_ADDR+4))&FLASH_ADDR_MASK)==FLASH_START_ADDR)//判断是否为0X00XXXXXX.
{
if(((*(vu32*)APP_START_ADDR)& MCU_RAM_ADDR_MASK)==MCU_RAM_START_ADDR) //检查栈顶地址是否合法.
{
__ASM("CPSID I");
Dma_DisableChannel(USART_DMA_TX_CHAN);
Dma_Disable();
Uart_DisableIrq(MY_USART,UartRxIrq); ///<使能串口接收中断
EnableNvic(MY_USART_IRQ, IrqLevel3, FALSE); ///<系统中断使能
jump2app=(iapfun)*(vu32*)(APP_START_ADDR+4); //用户代码区第二个字为程序开始地址(复位地址)
MSR_MSP(*(vu32*)APP_START_ADDR); //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
__set_MSP(*(vu32*)(APP_START_ADDR));
jump2app(); //跳转到APP.
}
}
}
请问HC32L176这个芯片要如何处理,我用串口进行更新升级,串口又用DMA传输,在重新启动APP前都关闭了,但APP不能正常启动。 |