在使用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();
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
原子哥有没有好的解决办法?
一周热门 更多>