一、问题思考

直接用官方提供的例程,为何下载程序后没有什么响应,难道自己设计的电路有什么不妥?

于是,对于电路进行具体分析,结果发现:

第一、官方的BOOT0采用杜邦线连接,在芯片手册好像找不到关于BOOT0的叙述,仅仅在《CH32V20x评估板说明书》中看到:



也就是说,这芯片要烧录时BOOT0必须接VCC,运行程序时BOOT0必须接GND。

因此可以确定,个人设计的线路欠佳,于是只能将原来的轻触SW1改为单刀开关:

目前线路板只能改成这样了

烧录方式也改成二线调试模式,使用WCH-LINK下载。

第二、官方设计的开发板采用外部晶振,而个人设计的线路没有外接晶振,所以必须启用内部晶振才能使芯片正常工作!

二、程序测试

1、修改失败

现在最紧要的是进行程序测试,将官方的程序CH32V20xEVT\EXAM\GPIO\GPIO_Toggle从程序库提取出来,编译结果总是提示debug.h等头文件链接出现问题,查看项目属性,觉得也没有发现什么不妥。

2、重建工程

于是只能自己新建项目,幸好这MRS新建项目比起Keil方便得多多。

方法也简单,即点击“文件”--“工程”,选择对应的芯片型号和设置工程存放的路径,点击“完成”,随即完成工程的创建!

3、修改代码

因为个人设计的线路没有外接晶振,所以需要启用芯片内部晶振,方法也没有简单,只须把system_ch32v20x.c中的

#define SYSCLK_FREQ_96MHz_HSE 96000000



改成

#define SYSCLK_FREQ_96MHz_HSI 96000000



为测试引脚功能,需要在主程序中复制官方代码中的引脚初始化代码到主程序:

void GPIO_Toggle_INIT(void) { GPIO_InitTypeDef GPIO_InitStructure = {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_PD01,ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, 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(GPIOD, &GPIO_InitStructure); }

int main(void)要添加变量定义

u8 i=0;

和在

printf("This is printf example\r\n");

之后调用

GPIO_Toggle_INIT();

大循环中添加引脚翻转代码:

Delay_Ms(1000); GPIO_WriteBit(GPIOD, GPIO_Pin_0, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));

三、点灯成功

上述代码修改完成后,点击编译和下载,板子上的LED灯亮起来了

https://www.bilibili.com/video/BV1c66XYZEDD/

这是通过串口2打印的信息:

2025.1.1

欢迎关注本人公众号,了解更多。

CH32V203F6P6-TSSOP20测试之02---点灯成功的更多相关文章

  1. esp8266 esp01s wifi继电器 初步点灯成功!艰难的历程啊,期间差点烧了

    0x00 前言说明 放假这几天,在淘宝买了esp01s,和一个搭配esp01s的wifi继电器准备做一些IOT(物联网)实验,踩了不少的坑,总算是点灯成功了!下面记录一些实验的拍照吧~ 继电器参数说明 ...

  2. 预备作业02:成功经验与C语调查20155230

    成功的经验 在写这一次的博客之前,我看了一部分同学所写的博客.因为我不懂关于自己更优秀的技能这一栏要怎么写,所以想要去找能以借鉴的东西.看完发现,这些同学在介绍自己技能时更多的是写自己在某一领域的成就 ...

  3. python模块引用问题(比较杂乱,懒得整理)

    1 在stackoverflows摘抄 If the import module in the same dir, use e.g: from . import core If the import ...

  4. 微冷的雨ASP.NET MVC之葵花宝典(MVC)

    微冷的雨ASP.NET MVC之葵花宝典 By:微冷的雨 第一章 ASP.NET MVC的请求和处理机制. 在MVC中: 01.所有的请求都要归结到控制器(Controller)上. 02.约定优于配 ...

  5. C# socket通信

    最近在研究socket,今天看到很好的一篇关于socket通信的文章,故收藏了,慢慢琢磨. 我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1.TCP/IP层次模型 当然这里 ...

  6. C# Socket网络编程精华篇(转)

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本 ...

  7. 嵌入式Linux系统Bootloader启动调试技术(回想)

    嵌入式系统搭建过程中,对于系统平台搭建project师最初的一步一般是移植Bootloader ,当然移植有几个级别,通常最常见的是參考的EVM 的硬件有了改动(如更改了FLASH ,更改了SDRAM ...

  8. [非技术参考]C# Socket网络编程

    我们在讲解Socket编程前,先看几个和Socket编程紧密相关的概念: 1. TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一 ...

  9. socket编程实例

    TCP/IP层次模型 当然这里我们只讨论重要的四层 01,应用层(Application):应用层是个很广泛的概念,有一些基本相同的系统级TCP/IP应用以及应用协议,也有许多的企业应用和互联网应用. ...

  10. 《读书报告 -- Elasticsearch入门 》-- 安装以及简单使用(1)

    <读书报告 – Elasticsearch入门 > 第一章 Elasticsearch入门 Elasticsearch是一个实时的分布式搜索和分析引擎,使得人们可以在一定规模上和一定速度上 ...

随机推荐

  1. Java面试真题之中级进阶(线程,进程,序列化,IO流,NIO)

    前言 本来想着给自己放松一下,刷刷博客,慕然回首,线程.程序.进程?Java 序列化?Java 中 IO 流? Java IO与 NIO的区别(补充)?似乎有点模糊了,那就大概看一下Java基础面试题 ...

  2. Flask常用插件

    Flask特点: 1.小而精的代表 2.基于Werkzeug工具箱编写的轻量级web开发框架,它主要面向需求简单,项目周期短的Web小应用 3.灵活,核心思想是Flask只完成基本的功能,别的功能都是 ...

  3. c++设计模式:设计原则

    c++设计八大原则(降低改变带来的代码修改) 一.依赖倒置原则(DIP) 1.高层模块(稳定)不应该依赖于低层模块(变化),二者应该依赖于抽象(更稳定) <高层模块 包括 低层模块所依赖的抽象, ...

  4. 基于Java+SpringBoot+Mysql实现的快递柜寄取快递系统功能实现三

    一.前言介绍: 1.1 项目摘要 随着电子商务的迅猛发展和城市化进程的加快,快递业务量呈现出爆炸式增长的趋势.传统的快递寄取方式,如人工配送和定点领取,已经无法满足现代社会的快速.便捷需求.这些问题不 ...

  5. 最新情报 2024免费开源 WAF

    WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙.区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的 ...

  6. Nuxt.js 应用中的 vite:configResolved 事件钩子

    title: Nuxt.js 应用中的 vite:configResolved 事件钩子 date: 2024/11/17 updated: 2024/11/17 author: cmdragon e ...

  7. .NET使用Umbraco CMS快速构建一个属于自己的内容管理系统

    前言 今天大姚给大家分享一个.NET开源.免费(MIT License).功能强大.灵活易用的内容管理系统:Umbraco CMS.本文将介绍在.NET中如何使用Umbraco CMS快速构建一个属于 ...

  8. python query-string处理Query String Parameters参数

    $ [sudo] pip install query-string >>> import query_string >>> query_string.parse(' ...

  9. Think in Java之构造器的真正调用顺序

    构造器是OOP的重要组成部分,很多人认为它很容易.只不过是new了一个对象而已.而think in java的作者却告诉我们,其实这并不容易.先看下面这个例子.在你没看结果之前,你觉得你的答案是对的么 ...

  10. JAVA 注解示例 详解

    注解(Annotation) 为我们在代码中天界信息提供了一种形式化的方法,是我们可以在稍后 某个时刻方便地使用这些数据(通过 解析注解 来使用这些数据). 注解的语法比较简单,除了@符号的使用以外, ...