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虚拟串口调试信息输出案例的主要内容,如果未能解决你的问题,请参考以下文章
CH559L单片机基于Arduino框架下实现USB CDC虚拟串口打印ADC数据