【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
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值