iamseer
,提供了支持Arduino IDE
平台开发的WCH
系列CH55x固件以及持续对本固件代码维护和更新。为此表示感谢!https://github.com/DeqingSun/ch55xduino
https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json
如果访问不了就搭建本地网络文件服务器进行安装,将资源下载到本地,通过HFS软件挂载到本地,再通过在Arduino开发板管理器网址添加本地的访问地址即可轻松搭建好。
如果固件版本低于
0.014
版本需要设置为:USER CODE w/14BB usb ram
,如果是固件版0.014
,这里可以直接选择Default CDC
,
如果你的芯片是全新的,没有烧录过程序的出厂芯片,那么第一次烧录的话,可以直接通过编译上传按钮进行上传,第二次烧录以及后面的程序烧录就不一样了,需要通过官方的烧录软件
WCHISPTool
进行烧录。
WCHISPTool
软件烧录方法为什么说与初次烧录不同呢?因为CH552设计是有 [运行模式] 和 [烧录模式] 的,如果原本内部没有程序,那么会直接进入烧录模式,这也就解释了为什么我们第一次连接电脑的时候就能直接下载程序(沁恒这么设计的理由应该也是为了方便批量化生产);那么我们在第一次烧录程序完成之后呢,下次上电的时候就会直接进入运行模式,而不会进行烧录模式了(而且如果长时间处于烧录模式,单片机会自动重启进入默认的运行模式)。驱动电路D+的接V33的按键,就是为了烧录而准备的,要想在下次上电的时候进入烧录模式,只需要在上电的时候保持D+为高电平,之后在松开就可以了。
download
按键,再上电,就可以完成程序的烧录。注意:是断电后,再按download
按键,不是在断电前就将download
按键按下,再重启的,否则不能进入下载阶段。本示例基于
V0.012
固件版本,默认是烧录到CH559上的,如果想在CH552上运行,将其余两个宏定义的led引脚以及相关代码注释掉即可。
/*
Blink
Turns an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the simpleCH552
it is attached to digital pin P3.3
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products
modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman
modified 13 Jun 2020
by Deqing Sun for use with CH55xduino
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/Blink
*/
#include "src/userUsbCdc/USBCDC.h"
#define LED_BUILTIN 12 //552--->11
#define LED_BUILTIN2 24
#define LED_BUILTIN3 25
__xdata char recvStr[64];
uint8_t recvStrPtr = 0;
bool stringComplete = false;
uint16_t echoCounter = 0;
// the setup function runs once when you press reset or power the board
void setup() {
USBInit();
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
pinMode(LED_BUILTIN2, OUTPUT);
pinMode(LED_BUILTIN3, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(LED_BUILTIN2, HIGH);
digitalWrite(LED_BUILTIN3, LOW);
USBSerial_println("Hello World!");
USBSerial_flush();
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
digitalWrite(LED_BUILTIN2, LOW);
digitalWrite(LED_BUILTIN3, HIGH);
delay(1000);
USBSerial_println("perseverance51");// wait for a second
USBSerial_flush();//等待串口数据发送结束(串口数据发送必不可少)
}
基于
V0.012
固件版本程序。
链接:https://pan.baidu.com/s/1Nkkc3YxqX4KtaHZrLpf7LQ
提取码:0bgb