完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
今天发现之前的之前工程师遗留的问题,他在usb中断的时候调用了写flash,这样会容易出错是吗?正常情况下,中断函数是不运行操作flash的。因为写flash会进入安全模式,安全模式一般会关闭总中断。想和原厂确认一下,是否usb中断不能操作flash。谢谢
case UIS_TOKEN_OUT | 4: if( U_TOG_OK ) { len = USB_RX_LEN; UEP0_CTRL ^= bUEP_R_TOG;/* ·?×? */ UEP0_CTRL = UEP0_CTRL & ~ MASK_UEP_R_RES | UEP_R_RES_NAK; //state = 1; //if(Ep0Buffer[64] == 0x05 && Ep0Buffer[65] == 0x01 && Ep0Buffer[66] == 0x01 && Ep0Buffer[67] == 0x00 && Ep0Buffer[68] == 0x08 && Ep0Buffer[69] == 0x05){ //state = 2; //}else{ //state = 1; //} //if(Ep0Buffer[65] == 0x01){ //state = 2; //} if(Ep0Buffer[65] == 0x01){ memset(HIDData1,0,sizeof(HIDData1));//°?HIDData1??0 memcpy(HIDData1, &Ep0Buffer[66], Ep0Buffer[64] - 1); WriteDataFlash(0, &HIDData1, sizeof(HIDData1)); } |
|
相关推荐
1个回答
|
|
|
1、安全模式需要关闭总中断,这个不是强制的,只是安全模式有效时间较短,如果有中断可能会导致安全模式有效时间被中断消耗掉,导致目标操作超时,变成无效操作。
2、芯片可以在任何时候进行FLASH的操作。 但是操作FLASH的代价是芯片(CPU)会“停止”,代码、交互逻辑要足够健壮,确保芯片在进入这种暂停状态之前所有的通讯都处于期望状态。 举个例子: 1、芯片作为USB设备,在写FLASH之前应当将所有使用到的Endpoint的应答状态改成NAK,这样即使芯片暂停运行,也不会有USB事务能够被完成,从USB主机的视角来看,设备是正常的,否则可能会有非期望的数据被传输。 2、串口通讯,芯片要操作FLASH之前应当告知串口通讯的对象,自身即将处于无响应的状态,这个时候不要发送数据,直到芯片写FLASH结束,通知串口通讯对象,自身已经退出无响应状态,再继续双向的数据交互。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
347 浏览 0 评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
861 浏览 0 评论
1461 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
3417 浏览 2 评论
2822 浏览 1 评论
安卓手机支持外接otg扩展坞 然后使用ch340+ch9329控制电脑吗
1808浏览 1评论
1461浏览 1评论
348浏览 0评论
CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
863浏览 0评论
467浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 05:52 , Processed in 0.715052 second(s), Total 72, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1170