沁恒CH32F103C8T6的开发和烧录配置说明
概述
CH32F1系列是沁恒生产的32位Cortex-M3 MCU, 片上集成了时钟安全机制、多级电源管理、 通用DMA控制器等. 此系列具有 2 路 USB2.0接口、多通道 TouchKey、 12 位 DAC 转换模块, 多通道 12 位 ADC、 多组定时器、 CAN 通讯控制器、 I2C/USART/SPI 等丰富的外设资源.
- 与STM32F103系列芯片相比, 管脚和寄存器兼容, 增加了USB功能, 有2个USB, 一个Host, 一个Device, 增加了DAC, 供电兼容5V
 - Flash下载算法和内部BootLoader和STM32不兼容, 需要使用沁恒提供的算法, 或者使用沁恒的下载软件通过串口和USB下载.
 
产品特点
- Cortex-M3内核, 72MHz系统主频
 - 单周期乘法和硬件除法
 - 20KB SRAM, 64KB CodeFlash
 - 供电范围: 2.7V-5.5V, GPIO同步供电电压
 - 多种低功耗模式: 睡眠/停止/待机
 - 上电/断电复位(POR/PDR)
 - 可编程电压监测器(PVD)
 - 7通道DMA控制器
 - 12位模数转换ADC, 1us转换时间
 - 16路TouchKey通道检测
 - 12位数模转换DAC
 - 7个定时器
 - 1个USB2.0 FullSpeed主机/设备接口(全速和低速)
 - 1个USB2.0 FullSpeed设备接口(全速和低速)
 - 1个CAN控制器(2.0B主动)
 - 2个I2C接口(支持SMBus/PMBus)
 - 3个USART接口
 - 2个SPI接口(支持Master和Slave模式)
 - 51个I/O口, 所有IO口都可以映射到16个外部中断
 - CRC计算单元, 96位芯片唯一ID
 - 串行单线调试(SWD)接口
 - 封装形式: LQFP64M、LQFP48、QFN48
 
Keil MDK 开发环境配置
1. 器件库代码示例和工具下载
- 下载WCH的EVT包, EVT包中带了CH32F103的器件包和演示代码
http://www.wch.cn/downloads/CH32F103EVT_ZIP.html - 下载ISP下载工具
http://www.wch.cn/downloads/WCHISPTool_Setup_exe.html 
2. 在Keil MDK中添加器件
- 打开Keil MDK, 点击菜单 Project -> Manage -> Pack Installer
 - 等打开的窗口载入完毕, 点击 File -> Import , 选择Keil.WCH32F1xx_DFP.1.0.1.pack
 - 完成后, 可以在Device Tree上看到 WCH 以及下面的 4 个型号
 
3. 导入示例项目
EVT包中, EXAM目录下是各个外设的演示代码, 如果要复制到你的工作目录, 务必将 EXAM/SRC 这个目录也复制过去, 在工作目录中保持这个结构
├─GPIO
│  └─GPIO_Toggle
└─SRC
    ├─CMSIS
    ├─Debug
    ├─Startup
    ├─StdPeriphDriver
    │  ├─inc
    │  └─src
    └─USBLIB
        ├─CONFIG
        └─USB-Driver
            ├─inc
            └─src
通过Keil MDK的 Project -> Open Project 打开 CH32F10x.uvprojx 文件打开示例项目. 如果左侧文件树没有显示黄三角的警告, 文件载入正常, 就可以编译了.
4. 修改GPIO_Toggle为板载LED(对应C13)的闪灯
将main.c代码替换为以下内容, 代码和STM32F103几乎是一样的
#include "debug.h"
void GPIO_Toggle_INIT(void)
{
    GPIO_InitTypeDef  GPIO_InitStructure;
    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)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    Delay_Init();
    USART_Printf_Init(115200);
    GPIO_Toggle_INIT();
    printf("SystemClk:%d\r\n", SystemCoreClock);
    printf("GPIO Toggle TEST\r\n");
    while(1)
    {
        Delay_Ms(250);
        PCout(13) ^= (1<<0);
	}
}
烧录/下载
CH32F103 有三种程序下载方式, 分别为:ST-LINK下载, 串口下载与USB下载
通过ST-link下载
- 将开发板通过ST-link连上电脑
 - 在Keil MDK中, 点击项目配置图标, 打开项目选项, 切换到Debug标签
 - 在Use中选择 ST-Link Debuger
 - 点击右侧的 Settings, 在打开的对话框中, Target Com要选择SW, 此时右侧的SW Device, 应该能看到这个ST-Link的信息, IDCODE为0x2Bxxxxx, Device Name为 ARM CoreSight SW-DP 之类的设备名
 - 在上面打开的对话框中, 切换到Flash Download选项, 如果下面的Programming Algorithm中, 不是CH32F1xx Flash, 需要点击下面的add增加算法, 选择CH32F1xx Flash
 - 还是这个对话框, 记得勾选 Reset and Run选项
 - OK保存
 
之后, 和STM32的用法一样, 点击F8就可以直接下载
串口下载
1. 硬件连接
Rx  -> A9
Tx  -> A10
GND –> GND
VCC –> 3V3
2. BOOT0设置
跳线BOOT0设置为高电平
3. 使用软件 WCHISPTool 下载
- 下载方式: 选择串口
 - 使能USB内部上拉电阻: 如果usb有上拉电阻可以不勾选
 - 选择下载串口
 - 选择要下载的HEX或者bin文件
 - 点击下载
 
USB下载
1. 硬件连接
CH32F103有2个USB口, 一个是主机USB, 一个是设备USB, 分别对应不同的管脚
HUSB
PB7 -> D+
PB6 -> D-
USB
PA12 -> D+
PA11 -> D-
软件默认下载使用HUSB, 可以用一个USB转Dip的小模块和开发板连接
2. BOOT0设置
跳线BOOT0设置为高电平
3. 使用软件 WCHISPTool 下载
- 下载方式: 选择USB
 - 解除读保护
 - 看到usb设备
 - 选择要下载的HEX或者bin文件
 - 点击下载
 
参考
- 国产arm芯片CH32F103芯片开发下载使用简介 https://blog.csdn.net/weixin_41565556/article/details/111619741
 - 在PlatformIO中使用(未验证) https://community.platformio.org/t/debugging-of-stm32f103-clone-bluepill-board-wrong-idcode/14635
 
沁恒CH32F103C8T6的开发和烧录配置说明的更多相关文章
- 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录
		
目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 StdPeriphLi ...
 - 沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置
		
目录 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录 沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录 沁恒CH32F103C ...
 - 沁恒CH32V103C8T6开发环境笔记
		
CH32V103C8T6 CH32V103C8T6是沁恒的RISC-V内核MCU, 基于RISC-V3A处理器, 内核采用2级流水线处理,设置了静态分支预测.指令预取机制,支持DMA. 主要参数如下 ...
 - 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置
		
目录 沁恒CH32V103C8T6(一): 核心板焊接和Windows开发环境配置 沁恒CH32V103C8T6(二): Linux RISC-V编译和烧录环境配置 硬件准备 CH32V103 开发板 ...
 - 沁恒CH32V003F4P6 开发板上手报告和Win10环境配置
		
CH32V003 沁恒最近推出的低价CH32V003系列, 基于青稞RISC-V2A内核, 48MHz主频, 2KB SRAM, 16KB Flash, 工作电压兼容3.3V和5V. 主要参数如下 S ...
 - 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置
		
目录 沁恒CH32V003(一): CH32V003F4P6开发板上手报告和Win10环境配置 沁恒CH32V003(二): Ubuntu20.04 MRS和Makefile开发环境配置 硬件准备 沁 ...
 - HI3518EV200+AR0130开发板烧录uboot、kernel、rootfs及其参数配置
		
分区名 分区大小 起始地址 截至地址bootloader:1M 0x00000000 0x00100000kernel: 3M 0x00100000 0x00400000rootfs: 12M 0x0 ...
 - NUC970开发板烧录
		
本次烧录的采用新塘公司官方的NuWriter软件进行烧录,现在我们首先来讲解如何将uboot,Linux内核,根文件系统烧录到开发板上. 过程中所需文件链接: 链接:https://pan.baidu ...
 - 韦东山嵌入式Linux学习笔记02--如何给开发板烧录程序
		
购买韦东山嵌入式开发板jz2440 v3会标配两根usb线和一根网线,OpenJtag需要单独购买, 我暂时还没买到该工具. 下面介绍usb烧录以及通过网线烧录程序. 1.usb烧录程序: 借助DNW ...
 
随机推荐
- 【LeetCode】243. Shortest Word Distance 解题报告(C++)
			
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 字典 日期 题目地址:https://leetcode ...
 - 【LeetCode】392. Is Subsequence 解题报告(Python)
			
[LeetCode]392. Is Subsequence 解题报告(Python) 标签: LeetCode 题目地址:https://leetcode.com/problems/is-subseq ...
 - D. Chloe and pleasant prizes
			
D. Chloe and pleasant prizes time limit per test 2 seconds memory limit per test 256 megabytes input ...
 - HDU 5965:扫雷(DP,递推)
			
扫雷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submissi ...
 - isEmpty 和 isBlank
			
<org.apache.commons.lang3.StringUtils> isEmpty系列 StringUtils.isEmpty() ========> StringUtil ...
 - C++输出控制小数点后位数的方法
			
以C++输出小数点两位数为例 setprecision(n)使用方法总结 首先要记住写头文件 #include <iomanip> //不要忘了头文件 以下是控制小数位数的三种写法 //t ...
 - CapstoneCS5212替代RTD2166|DP转VGA转换电路设计方法|CS5212替代方案
			
Capstone CS5212适用于设计DP转VGA转换电路,主要用在嵌入式单片机基于工业机或者INTEL X86主板上面,也适用于多个电子配件市场和显示器应用程序,如笔记本电脑.主板.台式机.适配器 ...
 - Vue.js高效前端开发 • 【Ant Design of Vue框架进阶】
			
全部章节 >>>> 文章目录 一.栅格组件 1.栅格组件介绍 2.栅格组件使用 3.实践练习 二.输入组件 1.输入框组件使用 2.选择器组件使用 3.单选框组件使用 4.实践 ...
 - MySQL数据操作与查询笔记 • 【第5章 MySQL 函数】
			
全部章节 >>>> 本章目录 5.1 数学函数和控制流函数 5.1.1 数学函数 5.1.2 控制流函数 5.2 字符串函数 5.2.1 字符串函数介绍 5.2.2 字符串 ...
 - springboot + mybatis plus使用insert 语句并返回主键
			
mapper文件 映射文件中在insert中设置useGeneratedKeys为true,keyProperty设置为主键名称 <insert id="addEmployees&qu ...