板子拿到以后发现和图片不一样,板子很小,好象是MIN版的。只带了一块调试板。板子有没有带任何的线缆,所以需要一些其它的器材。USB-TypeC接头线一条,一个P5X2的电缆,因为调试板接头是USB接头,需要一条延长线(我用USB-HUB代替)。实验的步骤如下:友情提示先看板子的PDF文档!
一、下载:MounRiver Studio软件,需要注意的是这个软件是需要java环境的。java一定要装好,我这里是java 8的环境。安装很简单,一路的“NEXT”。建议安装在磁盘空间比较大的磁盘。我安装到F盘。
我安装好以后是这样子地。
二、连接调试器到主机,确认驱动正常。这个调试器可以虚拟出一个UART端口,所以暂时不需要串口电缆。
三、使用USB-TypeC电缆连接开发板,将电源开关拨到ON的位置,可以发现电源LED点亮。
四、将调式器的P2X5电缆连接到开发板。这个注意该开发板可以由调试器供电。USB-TypeC电缆可以不用连接。
五、下载样例程序,CH32V103EVT.zip解压就可以,
六、建立一个新工程,在建立工程时选择芯片的型号"CH32V103C8T6"
项目自动建立一个模板,我直接编译,该模板。使用flash菜单,下载程序到芯片(注意:这里一定要连接好调式器!)
我的打开串口助手设置为:115200,8,N,1
可以看到输出:
说明串口通讯正常。
七、点亮LED
首先注意板子的LED线没有连接到任何的PIN上,需要将线连接到PA0端口
看到了吧!线没有接,我找了一条线把PA0和LED1接上。将程序拷贝到我的项目。
/********************************** (C) COPYRIGHT *******************************
* File Name : main.c
* Author : WCH
* Version : V1.0.0
* Date : 2020/04/30
* Description : Main program body.
*******************************************************************************/
/*
*@Note
GPIO例程:
PA0推挽输出。
*/
#include "debug.h"
/* Global define */
/* Global Variable */
/*******************************************************************************
* Function Name : GPIO_Toggle_INIT
* Description : Initializes GPIOA.0
* Input : None
* Return : None
*******************************************************************************/
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*******************************************************************************
* Function Name : main
* Description : Main program.
* Input : None
* Return : None
*******************************************************************************/
int main(void)
{
u8 i=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n",SystemCoreClock);
printf("GPIO Toggle TEST\r\n");
GPIO_Toggle_INIT();
while(1)
{
Delay_Ms(250);
GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i==0) ? (i=Bit_SET):(i=Bit_RESET));
}
}
将程序下载到板子,可以看到板子的LED灯开始闪亮了。
通过阅读开发板的资料发现这颗芯片的总线设计和ARM的总线非常的象,我猜想编程方法也应该相似。