谢谢!参考帖子修改后测试如下:
1.增加函数声明及isCDCopen()函数。
函数声明如下:
- //<<AICUBE_USER_GLOBAL_DEFINE_BEGIN>>
- // 在此添加用户全局变量定义、用户宏定义以及函数声明
- extern void usb_write_reg(BYTE addr, BYTE dat);
- extern BYTE usb_read_reg(BYTE addr);
- u8 isCDCOpen();
- //<<AICUBE_USER_GLOBAL_DEFINE_END>>
复制代码
isCDCopen()函数如下:
- //<<AICUBE_USER_FUNCTION_IMPLEMENT_BEGIN>>
- // 在此添加用户函数实现代码
- u8 isCDCOpen()
- {
- u8 result = 0;
- if (DeviceState != DEVSTATE_CONFIGURED){
- return 0;
- }
- IE2 &= ~0x80;
- usb_write_reg(INDEX, 1);
- if (!(usb_read_reg(INCSR1) & INIPRDY)){
- result = 1;
- }
- IE2 |= 0x80;
- return result ;
- }
- //<<AICUBE_USER_FUNCTION_IMPLEMENT_END>>
复制代码
2.修改main()函数,增加条件判断后printf_usb输出信息。
- void main(void)
- {
- //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
- // 在此添加用户主函数初始化代码
- //<<AICUBE_USER_MAIN_INITIAL_END>>
-
- SYS_Init();
-
- //<<AICUBE_USER_MAIN_CODE_BEGIN>>
- // 在此添加主函数中运行一次的用户代码
- P40 = 0;
- //<<AICUBE_USER_MAIN_CODE_END>>
-
- while (1)
- {
- //<<AICUBE_USER_MAIN_LOOP_BEGIN>>
- // 在此添加主函数中用户主循环代码
- if(isCDCOpen())
- printf_usb("LED4 is Toggle!\r\n");
- P60 = ~P60;
- //<<AICUBE_USER_MAIN_LOOP_END>>
- }
- }
复制代码
3.测试结果:
3.1 使用上面测试代码,编译并下载到STC8H8K64U实验箱,连接串口调试助手,但不打开串口,P60端口测试波形如下:
可以看到P60端口的翻转时间约3us。(即isCDCopen()函数判断运行时间约3us)
3.2 使用上面测试代码,编译并下载到STC8H8K64U实验箱,连接串口调试助手,打开串口,P60端口测试波形如下:
可以看到P60端口的波形不再是标准方波,输出信号有些紊乱,具体原因还不清楚。
|