软复位其实不需要 P3.2 == 0 , 就可以直接进USB下载引导 USB Writer HID1 ,
只要设置任意端口:
if (!Pxx){
IAP_CONTR=0X60; //如果自身不包含USB相关的应用,这一句就够了
}
如果本身就是USB应用,则需要多加两句来断来原有的USB连接:
if(!Pxx){
USBCON = 0x00; //禁用USB功能
delay_ms(2); //等电脑检测到USB设备掉线
IAP_CONTR=0X60; //软复位, 电脑重新枚举到 USB Writer HID1
}
还是挺方便的
<pre><code>以下是按键进行复位的片断,,就是不能 让电脑重新枚举到 USB Writer HID1,请大家看看,这样写是什么问题,让单片机只是复位重启,然后又运行用户代码的??
while(!KEY)
{
if(holdkey_time>=20)//holdkey_time 在定时器中计时
{
USBCON = 0x00; //清除USB设置
USBCLK = 0x00;
IRC48MCR = 0x00;
delay_ms(10); //检测到正确的命令序列后复位到系统区,此处的延时可省去
IAP_CONTR = 0x60; //复位到系统区
while (1);
}
}
holdkey_time = 0;
</code></pre>
明天我也试试,软复位
页:
1
[2]