02.CH59x入门指南——点亮LED

news/2024/9/17 19:07:26/ 标签: c语言, 开发语言

CH59x入门指南——点亮LED

文章目录

  • CH59x入门指南——点亮LED
    • 一、简介
    • 二、准备工作
      • 2.1 硬件条件
      • 2.2 项目条件
    • 三、项目实现
      • 3.1 硬件部分
      • 3.2 软件部分
      • 3.3 运行结果
    • 四、写在最后

一、简介

从本文开始,即将一一介绍 CH59x 的相关外设以及使用方法。

从任何一块芯片入门,大家首先都会尝试的就是 点灯,这就好比学习任何一种语言,大家都会先来一句 Hello world 一样。那么约定俗成来讲,本篇文章将介绍 CH59xLED 使用情况。

通过阅读本篇文章你将学到以下内容:

  1. 了解熟悉开发环境以及开发工具
  2. 如何使用 CH59x 点亮 LED

首先需要简单介绍下我所使用的开发环境:

  • Windows 10 x86
  • MounRiver Studio
  • CH592F-R0-1V0开发板

二、准备工作

在这一章节中,将简述开发所使用的硬件以及软件条件,给大家提供参考,在后续的文章中将不会出现类似的赘述,望谅解。

2.1 硬件条件

在我们开始学习其外设使用时,需要购买相应的外设开发板。我这里使用的是沁恒官方的 CH592F-R0-1V0 开发板,如下所示:

在这里插入图片描述

图片来源:CH592系列沁恒蓝牙产品-淘宝网 (taobao.com)

该开发板价格并不算贵,在某宝上也能买到,这里还是推荐大家去 沁恒微电子官方店铺。我这里就不附链接了,大家可以自行搜索下。

另外,大家如果有仿真的需求,需要购买相应的仿真器,我推荐使用 WCH-LinkE 如下所示:

在这里插入图片描述

图片来源:WCH-Link系列沁恒仿真器-淘宝网 (taobao.com)

其各个下载器有不同功能,这个在某宝店铺中有说明,大家不要买错了!!!截至本文撰写时,对于 CH59x 系列芯片,只有 WCH-LinkE 支持下载仿真!!!

当然,如果没有仿真的需求,使用 USB 或者 串口 下载,体验也是非常好的,尤其是沁恒的 USB 下载,这是我用过的较为方便的下载方式,推荐大家尝试!!!

2.2 项目条件

在进行点灯操作之前,需要先准备工程项目,新建项目的步骤在前一篇文中有所解释,这里我再次粘贴出如何建立工程的链接供大家参考:

MounRiver Studio Help

如点击无法跳转可自行复制跳转:http://www.mounriver.com/help

使用官方默认的模板会生成以下结构的文件:

在这里插入图片描述

其中各个文件作用如下所示:

  • LD 文件夹:存放编译相关的 link 文件
  • RVMSIS 文件夹:存放 RISC-V 相关的内核文件
  • Startup 文件夹:存放 CH592 启动文件
  • StdPeriphDriver 文件夹: 存放主要的库文件
  • obj 文件夹:存放编译输出文件
  • User 文件夹:存放 Main.c 文件

当然也可以自己构建自己喜欢的模板格式,这里就不再赘述。看到一篇不错的文,虽然不是 CH59x 系列,但也值得参考,这里贴出链接:

【CH32】| 01——新建工程 | 下载 | 运行 |调试_mounriver studio-CSDN博客

如点击无法跳转可自行复制跳转:https://blog.csdn.net/weixin_43822014/article/details/130741322


三、项目实现

本次实验的主要目的是控制 板载 LED0 的亮灭,在这一章中将对其分为硬件部分和软件部分进行分别介绍,希望能给大家提供一定的参考。

3.1 硬件部分

首先看到原理图,原理图在上一篇文章中提到过,位于资料压缩包中,大家可以找到进行阅读,我这里简单介绍。

如下图所示,在原理图中有两个 LED

在这里插入图片描述

这里应该是原理图没有改过来,所以有两个 LED0,但我们通过对比器件号和开发板得知 D2 对应 LED0D3 对应 LED1

而这两个脚并没有接到芯片上,其分别位于两个排针上,如下所示:

在这里插入图片描述

所以我们实验 需要使用杜邦线将 LED0 接到所需引脚上,这里我选择 PA4

LED0 的位置在开发板上的分布如下所示:

在这里插入图片描述

如图中红色方框选中的位置所示即为本次实验所用到的 LED0

3.2 软件部分

软件部分代码较为简单,如下所示,在 Main.c 中有以下代码:

#include "CH59x_common.h"int main()
{SetSysClock(CLK_SOURCE_PLL_60MHz);              // 设置时钟/* 初始化 PA4 */GPIOA_ModeCfg(GPIO_Pin_4, GPIO_ModeOut_PP_5mA); // PA4 推挽输出GPIOA_SetBits(GPIO_Pin_4);                      // 拉高 PA4 - 灭灯while (1){GPIOA_InverseBits(GPIO_Pin_4);              // PA4 输出翻转mDelaymS(500);                              // 延时 500 ms}
}

代码中主要使用了 gpio 库中的相关函数,在对其进行初始化以后,在主循环中翻转 PA4 实现 LED0 的亮灭。同时,为了防止闪烁太快我们无法进行观察,这里还添加了 500ms 的延迟。

3.3 运行结果

首先需要使用杜邦线将 PA4LED0 进行连接,如下图所示:

在这里插入图片描述

烧录下载程序之后,现象如下所示:

在后续将会专门写一篇文章介绍 CH59x 的多种下载方式。当然,在下载的资料的 pdf 中也有相关介绍,大家可以先自己参考。

在这里插入图片描述


四、写在最后

本文介绍了 如何使用 CH59x 点亮 LED。希望能够对大家的学习提供一点帮助。

目前暂时没有考虑整合的打算,所以各位读者如果需要看别的教程,可以点进 专栏 进行查找。在后续的更新中,将会逐步加入各个文章的链接,以便大家快速翻阅。另外源码会逐步开源。

欢迎广大读者提出问题以及修改意见,本人看到后会给予回应,欢迎留言,后续会逐步进行开源!!!
另外,由于文章是作者手打的文字,有些地方可能文字会出错,望谅解,也可私信联系我,我对其进行更改。

  • 个人CSDN账号:刘梓谦_-CSDN博客

  • Gitee:刘佳豪 (liu-jiahaohappy) - Gitee.com

  • GitHub:Jiahao-Liu29 (github.com)


http://www.ppmy.cn/news/1507074.html

相关文章

Linux Shell编程--变量

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 变量: bash作为程序设计语言和其它高级语言一样也提供使用和定义变量的功能 预定义变量、环境变量、自定义变量、位置变量 一、自定义变…

self的使用

目录 一、看一段代码,并分析问题 二、二说self 1、成员方法定义的基本语法 2、使用细节 一、看一段代码,并分析问题 class Dog:name"波斯猫"age2def info(self,name):print(f"name信息:{name}") # 加菲猫dogDog() …

Dirsearch 工具的安装、使用详细教程

Dirsearch 工具的安装、使用详细教程 Dirsearch简介 安装步骤 语法及参数 常见Payload 渗透实例 总结 Dirsearch简介 Dirsearch 是一个用于探测Web服务器上的隐藏目录和文件的工具。它通过发送HTTP请求来尝试访问可能存在的路径,从而找到不列在网站目录页面上的…

河工院首届工业设计大赛程序组(挑战赛)题解

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 寻找ACMer 思想&#xff1a; 签到题按照题意遍历字符串&#xff0c;不断向后寻找包含 ACMer 完整字符串的数量即可 std标程&#xff1a; #include <iostream> #include <cstring> #include …

人工智能时代,程序员如何保持核心竞争力?

人工智能时代&#xff0c;程序员如何保持核心竞争力&#xff1f; 在人工智能的浪潮中&#xff0c;程序员的角色和工作方式正在经历前所未有的变革。AIGC技术的兴起&#xff0c;如ChatGPT、Midjourney、Claude等&#xff0c;预示着AI辅助编程工具的日益普及。面对这一趋势&…

海量日志数据收集监控平台应该怎么设计和实现

设计和实现一个海量日志数据收集和监控平台&#xff0c;需要考虑以下几个关键方面&#xff1a;数据采集、数据存储、实时处理、监控与告警、可视化分析、扩展性和高可用性。以下是一个详细的设计和实现方案&#xff1a; 1. 需求分析 日志来源&#xff1a;明确日志的来源&…

图谱驱动的智能:如何用Django实现GraphRAG的高效检索

前言 前面一章讲述了构建知识图谱来提高基于 RAG 的应用程序的准确性,并且使用 Neo4j 和 LangChain 在 RAG 应用程序中构建和检索知识图谱信息。 图形检索增强生成 (Graph RAG) 这种方法利用图形数据库的结构化特性,将数据组织为节点和关系,以增强检索信息的深度和上下文性…

HDFS写入数据的流程图

1.客户端向namenode发送请求&#xff0c;请示写入数据 2.namenode接受请求后&#xff0c;判断这个用户是否有写入权限&#xff0c;如果不具备直接报错&#xff1b;如果有写入权限&#xff0c;接着判断在要写入的目录下是否已经存在这个文件&#xff0c;如果存在&#xff0c;直…

Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式

目录 摘要目的安装和卸载特别说明 Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式 摘要 Ubuntu版本&#xff1a;ubuntu24.04 主题下载地址&#xff1a;https://github.com/vinceliuice/WhiteSur-gtk-theme 参考的安装教程&#xff1a;https://blog.51cto.com/u_…

Mybatis的详细讲解

1.前情提要 1.1三层架构 &#xff08;1&#xff09;表现层 Controller 表现层是表示的事数据的接受&#xff0c;参数的校验&#xff0c;参数的转换&#xff0c;结果的转换&#xff0c;结果的返回 &#xff08;2&#xff09;业务逻辑层 Service 介于表现层和业务逻辑层之…

使用Cisco软件进行模拟万维网配置访问服务器过程

万维网(www)实验 文章目录 万维网(www)实验1.实验目的2.实验流程3.实验步骤 1.实验目的 1&#xff09;理解www站点 2&#xff09;理解上层应用和下层通信网络的关系 2.实验流程 开始 → 布置拓扑 → 配置路由及IP地址 → 配置web服务器→ 访问服务器 →结束 3.实验步骤 1&…

Vercel Error: (Azure) OpenAI API key not found

题意&#xff1a;Vercel 错误&#xff1a;(Azure) OpenAI API 密钥未找到 问题背景&#xff1a; I implemented openAI API in my Next.js app with the help of langchain library and it works superb on localhost, but in Vercel (ProVersion) it throws an error: 我使用…

js函数的arguments 对象

arguments对象是函数中传递的参数值的集合。 它是⼀个类似数组的对象&#xff0c;因为它有⼀个length属性&#xff0c; 我们可以使⽤数组索引表示法arguments[1]来访问单个值&#xff0c;但它没有数组中的内置⽅法&#xff0c; 如&#xff1a;forEach、reduce、filter和map。 …

AI的IDE:Cursor配置虚拟python环境(conda)

AI的IDE&#xff1a;Cursor配置虚拟python环境&#xff08;conda&#xff09; Cursor是一个AI的IDE&#xff0c;是从VSCode源代码中fork出来的&#xff0c;专注于和AI一起Coding而生。https://www.cursor.com/是官方地址。最近开始逐渐的试用Cursor&#xff0c;之前一直是VSCod…

机器学习之随机森林

文章目录 1. 随机森林概述1.1 定义与起源1.2 与其他算法的比较 2. 随机森林的工作原理2.1 决策树基础2.2 Bagging机制2.3 随机性的引入 3. 随机森林的构建过程3.1 数据准备3.2 特征选择3.3 多棵树的集成 4. 随机森林的优缺点分析4.1 优势4.2 局限性 5. 随机森林的应用场景5.1 分…

Kali Linux——网络安全的瑞士军刀

一、引言 在网络安全的领域中&#xff0c;Kali Linux 宛如一把强大而全能的瑞士军刀&#xff0c;为安全研究人员和专业人士提供了丰富的工具和资源。本文将深入探讨 Kali Linux 的特点、优势、常用工具以及实际应用场景&#xff0c;带您领略这一强大操作系统的魅力。 二、Kal…

OpenCV||超详细的图像金字塔

图像金字塔是一种图像的多尺度表示方法&#xff0c;它通过对原始图像进行一系列的处理&#xff0c;生成一系列分辨率逐渐降低的图像集合。这些图像按照分辨率从高到低&#xff08;或从低到高&#xff09;的顺序排列&#xff0c;形成类似金字塔的结构&#xff0c;因此得名图像金…

Basic‘ attribute type should not be a container解决方法

在使用Spring Data JPA的时候&#xff0c;实体类中定义一个用List修饰的成员ip&#xff0c;IDEA会提示Basic‘ attribute type should not be a container错误&#xff0c;导致编译不通过。 查阅一些博客和文档说是Spring Data JPA这个框架会把实体类的属性当做是MySQL数据库中…

深入理解Transformer技术原理

一、什么是注意力机制 在深入了解Transformer的架构原理之前&#xff0c;我们首先要了解下&#xff0c;什么是注意力机制。人类的大脑对于信息的获取也存在注意力机制&#xff0c;下面我举几个简单的例子&#xff1a;从上面的图片中&#xff0c;我们可能更容易关注&#xff0c…

【Next】全局样式和局部样式

不同于 nuxt &#xff0c;next 的样式绝大部分都需要手动导入。 全局样式 使用 sass 先安装 npm i sass -D 。 我们可以定义一个 styles 文件&#xff0c;存放全局样式。 variables.scss $fs30: 30px;mixin border() {border: 1px solid red; }main.scss use ./variables …