趁着研究串口,把前几年买的STC-USB LINK 1D也翻出来,先试一下双串口还有没有用?
我总结了一下,上一次玩这个,是用的杜邦线,感觉松松垮垮的,这次我买了个专业是压线钳,自己买头子回来
每一条线都自己压,没理由不成功的:
果然,功夫不负有心人,STC-USB LINK 1D 可以用双串口啦!
并且我发现,使用说明是说S-TxD 和S-RxD 是串口1,SWDDAT和 SWDCLK 是第二串口,实际实验发现不是的
SWDDAT和 SWDCLK 是串口1 COM18 STC USB-Link1 (CDC1)
S-TxD 和S-RxD 是串口2 COM19 STC USB-Link1 (CDC2)
这2个串口我都买了头子,分别在4台PC机证实过了。
接着看 第二十三集:看门狗
这一讲,内容并不复杂,关键是除了好以下的初始化:
USB复位代码
USBCON = 0X00;
USBCLK = 0X00;
IRC48MCR = 0X00;
delay_ms(10);
而了解看门狗,学会计算喂狗时间和正确喂狗,反倒是很容易理解:
#include " wdt.h"
void WDT_Init(void) // 看门狗初始化
{
WDT_CONTR = 0X24;
}
void WDT_Feed(void) // 看门狗喂狗
{
WDT_CONTR = 0X34;
}
注意喂狗时间的计算:
例如我们对WDT_CONTR 的后3位:WDT_PS B2 B1 B0
这3位,取100 的话,分频系数就是32,主频取22.1184M那么时间:
12*32768*36/22118400=0.56888888888秒
冲哥的程序2个延时,一个是400ms,另一个是2ms 我们568.88888ms喂一次狗,足够了
总之,初始化的时候,不把下面4句写进去,是不能顺利使用看门狗功能的!
USBCON = 0X00; //usb初始化,112-115没有的话,看门狗是不能执行的
USBCLK = 0X00; //没有这4行,USB就不能有效的断开,就会进入下载模式
IRC48MCR = 0X00; //我们一定要在这里保证USB有效的断开。
delay_ms(10);