CH32V103C8T6

CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测、指令预取机制,支持DMA. 主要参数如下

  • CPU: 32位RISC-V3A, RV32IMAC指令集, 最高80MHz, 典型72MHz
  • RAM: 20KB
  • Flash: 64KB
  • BootLoader: 3.75KB 系统引导程序存储区
  • 供电: 2.7V - 5.5V (兼容3.3V和5V)
  • Timer: 通用3, 高级1, 看门狗2, 系统时钟1
  • ADC: 12bit, 10CH
  • SPI: 2
  • I2C: 2
  • UART: 3
  • USBHD: 1
  • 封装: LQFP48

硬件部分

烧录器 WCH-Link

需要准备一片 WCH-Link 用于烧录沁恒的芯片. 市面上有兼容 DAP-Link 和 WCH-Link 的烧录器. 注意看烧录器的说明, 其模式在加电前通过按键可以切换. 烧录 CH32V103 时, 必须处于 WCH-Link的状态

开发板 Bluepill

因为 CH32V103C8T6 引脚布局与 STM32F103C8T6, CH32F103C8T6 完全一致, 硬件设计通用,PIN对PIN兼容, 所以可以直接使用 STM32F103C8T6 核心板(Bluepill)作为开发板.

手里正好有一片 STM32F103C6T6 的开发板, 电路和 STM32F103C8T6 是一样的, 只是芯片型号不同, 于是用热风焊将C6T6吹下来, 把 CH32V103C8T6 换上去.

热风枪温度设置成290度, MCU加上助焊油, STM32F103C6T6 吹掉之后的焊盘

焊上了 CH32V103C8T6, 第一次放得有点歪

又吹了一遍, 这次小心放正了

事后感觉有些PIN虚焊了, 所以又用电烙铁拖了一遍

连线

WCH-Link -> Bluepill

3V3 -> 3V3

GND -> GND

SWD -> SWIO

SCK -> SWCLK

软件部分

软件部分其实就是 MounRiver Studio, 下载完解压后安装. MounRiver Studio 是基于 Eclipse 的扩展开发环境, 对于熟悉 Eclipse 的人用起来还比较方便. 安装 MounRiver Studio 的同时, WCH-Link 的驱动就装上了, 不需要再另外安装.

测试项目

创建项目

下面建一个测试项目, 通过GPIO驱动板子上的PC13 LED

File -> New -> MounRiver Project, 在对话框中

  • 选择芯片型号 WCH -> CH32V103 [RIsC-V] -> CH32V103C8T6
  • 输入Project Name, 例如 Test001
  • 勾选 Use default location, 如果需要放到其他目录, 这里可以不勾选, 自行选择
  • Template Type 选择 NoneOS, 因为这只是个简单测试, 只需要while循环即可
  • 点击 Finish

在项目 Project Explorer 中会出现目录结构,

编辑代码

用户代码在 User 目录下, 展开 User, 打开 main.c 将内容修改为

#include "debug.h"

void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
} 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(500);
GPIO_WriteBit(GPIOC, GPIO_Pin_13, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));
}
}

编译项目

使用图标栏中的编译按钮, 或者按F7编译项目(完整编译使用Shift+F7)

烧录

首先在设备管理器中查看 Ports (COM & LPT), 如果烧录器处于WCH-Link状态并且已经连接电脑, 会出现 WCH-LinkRV SERIAL(COMx) 这样的设备

使用图标栏中的下载按钮(Download), 或者按F8烧录.

参考

沁恒CH32V103C8T6开发环境笔记的更多相关文章

  1. 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置

    目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...

  2. 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置

    CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...

  3. Java开发环境笔记

    在配置环境变量中 设置Java_home: 一是为了方便引用,比如,jdk安装在c:\jdk16.0目录里,则设置java_home为该目录路径,那么以后要使用这个路径的时候,只需输入%java_ho ...

  4. webpack4搭建Vue开发环境笔记~~持续更新

    项目git地址 一.node知识 __dirname: 获取当前文件所在路径,等同于path.dirname(__filename) console.log(__dirname); // Prints ...

  5. Windows下Qt5搭建Android开发环境笔记

    Windows很大的特点是配置使用几乎都可以图形化进行,和Linux比起来在很多时候配置环境也要方便很多.所以,搭建Qt for Andorid也是十分简单的.需要以下工具: 1.最方便的Qt官方包, ...

  6. STM8S103F3P6 开发环境笔记

    STM8S103F3 产品手册 https://www.st.com/resource/en/datasheet/stm8s103f2.pdf 内核 16 MHz advanced STM8 core ...

  7. docker-ce 搭建的 lamp 开发环境笔记

    工作目录: /home/{username}/dockers/lamp 将docker容器的apache的80 映射为本地主机的81 # sudo docker pull mattrayner/lam ...

  8. 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置

    目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...

  9. Linux下STM32开发环境的搭建

    目录 一.概述 1.目的 2.开发环境描述 3.Eclipse构建的STM32集成开发环境结构 4.GDB / GDB Server 调试模型 二.搭建步骤 三.详细的搭建过程 1.安装eclipse ...

随机推荐

  1. Spring Cloud 解决了哪些问题?

    在使用 Spring Boot 开发分布式微服务时,我们面临的问题很少由 Spring Cloud解决.与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安 全问题.处理服务发现的能力 ...

  2. 『忘了再学』Shell基础 — 7、Bash基本功能(多命令顺序执行)

    目录 1.多命令执行符: 2.多命令执行符&& 3.多命令执行符|| 4.&&和||联合应用 Linux系统支持多条命令顺序执行,就是我可以依次输入多条命令后,统一按E ...

  3. 8 个有用的 HTML5 标签

    作为一个 web 前端开发者,在制作页面的时候你会从一大堆不同的标签中选择合适的标签来完成相应的功能.有些 HTML5 标签广为流传,例如 <article> <header> ...

  4. 深入理解nodejs的异步IO与事件模块机制

    node为什么要使用异步I/O 异步I/O的技术方案:轮询技术 node的异步I/O nodejs事件环 一.node为什么要使用异步I/O 异步最先诞生于操作系统的底层,在底层系统中,异步通过信号量 ...

  5. Ubuntu20.04中创建Pycharm桌面快捷方式

    [Desktop Entry] Type=Application Name=Pycharm GenericName=Pycharm3 Comment=Pycharm3:The Python IDE E ...

  6. 如何用CSS实现左侧宽度固定,右侧自适应(两栏布局)?左右固定中间自适应(三栏布局)呢?

    在前端日常布局中,会经常遇到左侧宽度固定,右侧自适应或者左右两边固定,中间部分自适应的实用场景.本文例子中将列举出两种常用的两栏布局,左侧固定右侧自适应的常用方法以及代码和五种左右固定中间自适应的常用 ...

  7. Mybatis更新和删除数据

    接上文->Mybatis快速入门<- 1.在UserMapper.xml配置更新和删除 <!-- 更新操作--> <update id="update" ...

  8. JavaWeb知识梳理(可收藏)

    **JavaWeb相关知识 ** 1.Servlet 1.1 Status Code(Http状态码) 1.1xx 请求信息 Http状态码 Http Status Code Http状态码含义中文说 ...

  9. zabbix3.2 监控MongoDB

    本文参考连接: https://www.jianshu.com/p/a6b36d5b74ba 一.实验环境: MongoDB/zabbix-agent:172.16.88.44 zabbix-serv ...

  10. linux磁盘分区fdisk命令操作(实践)

    写这篇的目的,还是要把整个过程完整的记录下来,特别是小细节的地方,通常很多情况是一知半解,平时不实践操作只凭看是没有用的,所以做这个行业就是要多动手,多学习,多思考慢慢你的思路也会打开.练就自己的学习 ...