国产单片机(沁恒微WCH)CH32V307评估板初探

国产单片机(沁恒微WCH)CH32V307评估板初探

关于沁恒微:国产芯厂家、官网链接

公司简介 - 南京沁恒微电子股份有限公司 (wch.cn)

开发板资源:

评估板应用于 CH32V307 芯片的开发,IDE 使用 MounRiver 编译器,可选择使用板载或独立的 WCH-Link 进行仿真和下载,并提供了芯片资源相关的应用参考示例及演示。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0C6sXDN6-1689743895664)(C:\Users\23206\AppData\Roaming\Typora\typora-user-images\image-20230719112145708.png)]

上图 CH32V307V 评估板配有以下资源:

主板 - CH32V307EVT

1.主控 MCU :CH32V307VCT6

2.SDI&UART 接口 :用于下载、仿真调试,需跳线选择是否使用板载 WCH-Link

3.LED :通过 J3 插针连接主控 MCU 的 IO 口进行控制

4.WCH-Link MCU :实现 WCH-Link 功能的 MCU

5.按键 S1 :复位按键,用于外部手动复位主控 MCU

6.开关 S3 :用于切断或连接外部 5V 供电或 USB 供电

7.USB type-C 接口 P7 :连接主芯片 USB2.0 全速通信接口

8.USB type-C 接口 P6: 连接主芯片 USB2.0 高速通信接口

9.稳压芯片 U1 :用于实现将 5V 电压转成芯片可用的 3.3V 电源电压

10.Download 接口 J1 :当 J1 跳线短接时,可用于实现 WCH-Link 固件更新

11.WCH-Link 接口 :用于连接 PC 和 WCH-Link 功能模块

12.MCU I/O 口 : 主控 MCU 的 I/O 引出接口 CH32V30x 评估板说明及应用参考 http://wch.cn V1.6 3

13.USER 按键 S2 :通过 J3 插针连接主控 MCU 的 IO 口进行按键控制

14.WCH-Link 指示灯:包括 D1、D2 和 D3 三个 LED 灯,指示 WCH-Link 运行状态

15.网口:主芯片的网络通讯接口 16.ARDUINO 接口:方便连接 ARDUINO 接口的开发板

MounRiver Stuido介绍

MounRiver Studio(MRS)是一款基于Eclipse GNU版本开发,面向RISC-V、ARM等内核MCU的集成开发环境,提供专业嵌入式项目所需的开发调试烧录以及项目管理等功能。

目前免费,可放心使用,无需担心license。
在这里插入图片描述

MounRiver Stuido下载

在这里插入图片描述

MounRiver Stuido安装

非常简单、一路next即可,我这里使用默认安装路径,如需修改请参考其他资料。

MounRiver Stuido汉化(可选)

创建工程基于CH32V307VCT6:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CSC2V492-1689743895668)(C:\Users\23206\AppData\Roaming\Typora\typora-user-images\image-20230719113940748.png)]

填写工程信息:

在这里插入图片描述

创建好结果如下:工程名是DEMO_01

编写测试代码(基于官方代码包):

第一步:添加用户自定义的文件夹跟文件代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KHZ4hZC5-1689743895670)(C:\Users\23206\AppData\Roaming\Typora\typora-user-images\image-20230719115233214.png)]

第二步:把自己添加的用户自定义文件夹加到编译选择中去

具体操作如下:

右键工程属性

选择C/C++构建的设置选项

C编译器设置包含选择

添加相对目录:根据实际情况添加,这里是添加api文件夹

在这里插入图片描述

第三步:自己补充一个main.h(非必须)

这里main.h的作用主要是包含相关的库跟api接口头文件

#ifndef _MAIN_H_
#define _MAIN_H_#include "ch32v30x.h"#include "debug.h"
#include "led.h"#endif

第四步:根据官方代码包修改main.c

#include "main.h"//WCH沁恒微测试代码01
int main(void)
{NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);SystemCoreClockUpdate();Delay_Init();LED_Config();USART_Printf_Init(115200);	printf("SystemClk:%d\r\n", SystemCoreClock);printf( "ChipID:%08x\r\n", DBGMCU_GetCHIPID() );printf("中文GPIO测试\r\n");while(1){LED_Toggle();}
}

第五步:编译代码(CTRL+B)全部构建

在这里插入图片描述

第六步:配置WCH-Link 下载属性

在这里插入图片描述

解除代码保护

目标模式选择-可以先查询再应用

内存分配选择-可以先查询再应用

Cade Flash 全擦选择:我这里选择重新上电全擦

目标:连接好后自动识别不需要更改

保存关闭后,F8下载。

在这里插入图片描述

最后一步下载验证:

测试代码
在这里插入图片描述

测试日志打印:

在这里插入图片描述

完整测试代码如下:

#include "led.h"void LED_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure = {0};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);
}void LED_Toggle(void)
{GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_RESET);Delay_Ms(100);printf("灭\r\n");GPIO_WriteBit(GPIOA, GPIO_Pin_0, Bit_SET);Delay_Ms(100);printf("亮\r\n");}
#ifndef  _LED_H_
#define  _LED_H_#include "ch32v30x.h"void LED_Config(void);
void LED_Toggle(void);#endif

参考资料:

产品手册 - 南京沁恒微电子股份有限公司 (wch.cn)

至此基于于沁恒微电子工业级互联型RISC-V MCU CH32V307评估版的使用就完成了,国产芯片是大势所趋,如果大家感兴趣可以点赞关注,下面有时间会更新其他外设的使用方法跟教程。
完整工程可以在后台私信找我领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为何异地销号这么难?这些注意事项要熟记!

最近有不少小伙伴私信小编,他们在网上办理的大流量手机号卡,用了一段时间之后想换其他的卡,所以想注销当前用的卡,但是注销的时候确实屡屡碰壁,程序还比较繁琐,有的甚至申请注销了几个月还注销不掉&#xf…

面向对象Java基础

前言 看大话设计模式的时候,发现自己的基础不是很扎实,重新回顾一些存在有点点不确定的内容,并从书中截取下来,做成笔记快速复习。 1、字段和属性 字段:用private修饰,也叫私有变量。属性:字…

Microsoft Outlook 共享收发邮件的权限给其他人

点击File 点击Account Settings→DelegateAccess 点击Add

[java安全]CommonsCollections1(LazyMap)

文章目录 【java安全】CommonsCollections1(LazyMap)前言LazyMap如何创建LazyMap对象?如何调用LazyMap的get()方法?如何触发AnnotationInvocationHandler#invoke()方法?POC总结参考 【java安全】CommonsCollections1(LazyMap) 前言 前面我们…

Hadoop: High Available

序言 在Hadoop 2.X以前的版本,NameNode面临单点故障风险(SPOF),也就是说,一旦NameNode节点挂了,整个集群就不可用了,而且需要借助辅助NameNode来手工干预重启集群,这将延长集群的停…

Python学习笔记-Windows下VirtualEnv+VSCode中虚拟环境配置

1 VirtualEnv简介 VirtualEnv是一个虚拟化环境,是独立开的开发环境,在一个文件夹中创建的独立虚拟环境,可以分隔开不同项目,开发互不影响。 优点如下: 使不同的应用开发环境独立,避免互相干扰环境升级不…

RxSwift 使用方式

背景 最近项目业务,所有模块已经支持Swift混编开发,正在逐步使用Swift 方式进行开发新业务,以及逐步替换老业务方式进行发展,所以使用一些较为成熟的Swift 的三方库,成为必要性,经过调研发现RxSwift 在使用…

lvs使用

1.前言 LVS(Linux Virtual Server)是一个基于 Linux 内核的负载均衡器,用于分发网络流量和将请求转发给后端服务器。LVS 提供了多种负载均衡算法和转发模式,以满足不同场景和需求的负载均衡需求,在LVS中定义虚拟服务的…

制作Visual Studio离线安装包

vs2015之后官网就不提供离线安装包了,使用离线安装包就需要自己手动制作一个; 以vs2019为例: 先去官网下载在线安装器 官网下载地址:Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com) 展开2019的标签…

【C语言】深剖数据在内存中的存储

👦个人主页:Weraphael ✍🏻作者简介:目前正在回炉重造C语言(2023暑假) ✈️专栏:【C语言航路】 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你…

初识react

初识react 第一步就给我出个问题版本太低 https://www.cnblogs.com/gslgb/p/16585233.html https://blog.csdn.net/xiangshiyufengzhong/article/details/124193898 第二个问题 便利生成dom 需要绑定key 不要总想着加冒号这不是vue 第三个问题 我p标签包裹 MapList组件 MapLis…

Redis相关配置(3)

⭐ 作者简介:码上言 ⭐ 代表教程:Spring Boot vue-element 开发个人博客项目实战教程 ⭐专栏内容:个人博客系统 ⭐我的文档网站:http://xyhwh-nav.cn/ 文章目录 Redis相关配置1、units2、Include3、loadmodule 加载模块4、NET…

创意网页模板免费下载,让你的网站与众不同!

今天给大家带来的网站模板素材,网站类型丰富,包含户外旅行、餐饮、个人网站等等,可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?categorydesign&sourcecsdn&planbbqcsdn772 1、设…

【1++的C++初阶】之vector

👍作者主页:进击的1 🤩 专栏链接:【1的C初阶】 文章目录 一,什么是vector?二,构造与析构三,vector迭代器的实现四,vector部分重要接口的实现 一,什么是vector? vector…

使用NVIDIA FX Composer验证多纹理合成效果

最近项目上有一个需求,需要将4张带透明通道纹理合成为一张,并且每张纹理指定一个全局透明度。由于纹理过多,合成效果无法保证,为了减少项目的风险,领导希望我先快速验证一下我们讨论的方法是否能完成项目的要求。因此我…

销售易的12年与七个瞬间

导读:企业级没有捷径 12年对一家企业意味着什么? 在消费互联网领域,12年足够长,短短几年内上市的故事过去屡见不鲜。在企业服务的toB领域,产业成熟和企业发展的时间维度被拉长,但故事同样精彩。 2023年7月1…

ylb-接口5产品详情

总览: 1、service处理(根据产品id ,查询产品信息) 在api模块下service包,ProductService接口添加新方法(根据产品id ,查询产品信息queryById(Integer id)): package …

Python venv 和 virtualenv 虚拟环境的基本使用

1.前言 venv 和 virtualenv 都是搭建虚拟环境的工具,virtualenv 是第三方开源的,而 venv 作为 virtualenv 的一个子集自 Python3.3 开始集成到标准库中,在 virtualenv 的文档中可以看到他们的区别: 没有 app-data 种子方法&#…

Python爬虫——urllib_post请求百度翻译

post请求: post的请求参数,是不会拼接在url后面的,而是需要放在请求对象定制的参数中 post请求的参数需要进行两次编码,第一次urlencode:对字典参数进行Unicode编码转成字符串,第二次encode:将字…

isaac sim添加孔网格

isaac sim仿真和其它仿真实际上一样,对于孔的仿真,是没那么简单的 在此记录一下踩过的坑 1,首先,你需要在soildworks中将你的孔画出来,并导出stl 2,你可以在win10中使用3D画图查看孔的网格,看…