STM32f4 usb iap app之间切换疑问

2019-07-20 05:40发布

在使用usb customhid通信实现 程序更新时候,在BootLoader中枚举一次usb,app中枚举一次usb。两次usb枚举是有间隔的。连接上位机中间会断开,怎么才能实现不断开连接进行usb 实现BootLoader呢?能不能只在上电时枚举一次usb(应该怎么实现)???
其中iap主要函数为,先读取flash中iapflagaddr中的数据进行判断,当有app程序时进行跳转,没有则等待更新app。
         STMFLASH_Read(iapflagaddr,m_IAPFlagR,0x01);                                                                 
        if(m_IAPFlagR[0] == IAPState_APPProgramTrue)
        {
          main_Application();
        }
         else
        {       
                HAL_Init();
               Stm32_Clock_Init(384,25,2,8);    /* Configure the system clock */      
               USBD_Init(&USB_OTG_dev,USB_OTG_FS_CORE_ID,&USR_desc,&USBD_CUSTOMHID_cb,&USR_cb);                                 
                delay_init(192);                 
                USB_CommandComplete(CmdType_HFMSendData, CmdID_ComCheck, 0, NULL, 1);
                while(1)
                {
                 
                        USB_HandleRecData();
                }
      }


app在接收到某指令后,修改iapflagaddr中的数据。软件复位,从iap中重新执行
                                  __disable_irq();             
                                     INTX_DISABLE();                       
                                        STMFLASH_Read(iapflagaddr,m_IAPFlagR,0x01);                                        //        
                                        if(m_IAPFlagR[0]== IAPState_APPProgramTrue)
                                        {                                                                                                                                                                                                         
                                          m_IAPFlag[0].ulValue = IAPState_APPUpdataing;                                                                                                                //
                                                iap_write_appbin(iapflagaddr,m_IAPFlag[0].ucValue,2);                          //           
                                                HAL_NVIC_SystemReset();
                                        }

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
正点原子
1楼-- · 2019-07-20 08:02
 精彩回答 2  元偷偷看……
mhsdsa
2楼-- · 2019-07-20 09:08
有什么好的解决办法吗,谢谢分享
challengewxg
3楼-- · 2019-07-20 13:17
正点原子 发表于 2018-10-16 02:26
帮顶

原子哥有没有好的解决办法?
正点原子
4楼-- · 2019-07-20 13:50
 精彩回答 2  元偷偷看……

一周热门 更多>