CH552单片机 USB CDC虚拟串口调试信息输出案例

Posted perseverance52

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CH552单片机 USB CDC虚拟串口调试信息输出案例相关的知识,希望对你有一定的参考价值。

【CH552单片机 】USB CDC虚拟串口调试信息输出案例


  • ✨本案例基于开源工程:https://github.com/rikka0w0/CH55x_USB_CDC修改而来,原工程是基于CH554但是也兼容CH552的。
  • ✒在基于Keil开发环境下修改而来,原工程代码支持Keil和SDCC。

📌根据实现原理,也可以从上一篇的《CH559L单片机CDC虚拟串口下数据环路测试案例》修改来实现。

🍭在Arduino平台想跑这样一个功能,只需要选择一个示例编译烧录即可完成。可能就几分钟的事情。

📝代码修改说明

在原代码基础上添加了一个LED功能实现的代码,定义的引脚是P11口上,因为我仅需要其中的USB CDC虚拟串口输出的功能,其他的功能函数我就没有启用了。

🎆CDC虚拟串口调试信息输出说明

调试信息内容可以大全,但是不是连贯的,没有映射到printf函数当中。

  • main.c主程序代码如下
#include "Delay.H"
#include "usb_cdc.h"
#include "ch554_platform.h"
sbit LED0 = P1^1;
sfr PORT_CFG        = 0xC6;         // port 0/1/2/3 config
#define bP0_DRV           0x10      // P1 driving capability: 0=5mA, 1=20mA
#define bP0_OC            0x01      // P1 open-drain output enable: 0=push-pull output, 1=open-drain output

void main(void) 
	CDC_InitBaud();
    CH554_Init();
  PORT_CFG |= (bP0_DRV << 1); //P1端口驱动电流最大20mA
	P1_MOD_OC &= 0xfd;//P11设置推挽模式
  P1_DIR_PU |= 0x02;

	LED0 = 0;
    while(1) 
//    	CDC_USB_Poll();
//    	CDC_UART_Poll();
			CDC_Puts("Perseverance \\n");
			LED0 = ~LED0;
			mDelaymS(1000);
			CDC_Puts("Hello world! \\n");
			LED0 = ~LED0;
			mDelaymS(1000);
    ;


/*
 * According to SDCC specification, interrupt handlers MUST be placed within the file which contains
 * the void main(void) function, otherwise SDCC won't be able to recognize it. It's not a bug but a feature.
 * If you know how to fix this, please let me know.
 */
void USBInterruptEntry(void) interrupt INT_NO_USB 
	USBInterrupt();



  • 📍USB CDC虚拟串口调试打印信息

📗工程源码

链接:https://pan.baidu.com/s/1Us-tw3Ua6CKS_9vxYeaqrw 
提取码:4tjh

以上是关于CH552单片机 USB CDC虚拟串口调试信息输出案例的主要内容,如果未能解决你的问题,请参考以下文章

CH559单片机 USB CDC虚拟串口调试信息输出案例

CH559L单片机基于Arduino框架下实现USB CDC虚拟串口打印ADC数据

CH559L单片机CDC虚拟串口下数据环路测试案例

STC USB-CDC 虚拟串口使用

STM32 USB使用记录:使用CDC类虚拟串口(VCP)进行通讯

沁恒CH552 USB学习之旅