找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3613|回复: 10
打印 上一主题 下一主题
收起左侧

边干边学CH32V103单片机-从“点亮LED开始认识CH32V103单片机

  [复制链接]
跳转到指定楼层
楼主
ID:678336 发表于 2022-4-9 19:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
南京沁恒出品的CH32V103系列单片机,采用完全开源的RISC-V架构,对标STM32F103系列单片机。本人出于对纯国产32位单片机的好奇,开始学习这款单片机。
学习单片机的最好方法就是边干边学。经过仔细阅读沁恒公司网站的信息,选择沁恒厂家出品的CH32V103R8T6核心板和WCH-Link下载器套餐作为硬件平台,以及MounRiver作为集成开发环境,开始了学习旅程。
学习软件编程都是以”Hello World !”开始,学习单片机则都是从“点亮LED”开始,本人也不能免俗。将核心板与WCH-Link用杜邦线连接,再插入笔记本电脑的USB口。打开MounRiver,在自己习惯的位置新建一个P-001工程项目,参考厂家提供的GPIO例程,按照以下代码修改User子目录下的main.c文件,
/*
*@Note
    使用沁恒CH32V103R8T6核心板,板上排针连接为PA0接LED1或LED2
    通用MUC第一个实例,“点亮LED”
*/

#include "debug.h"

int main(void)
{
    u8 i=0; //端口变量,0-低电位,1-高电位。调用GPIO_WriteBit()函数时才能作用于PA0端口

    Delay_Init(); //初始化延时函数

    GPIO_InitTypeDef GPIO_InitStructure = {0}; //声明GPIO结构体定义
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能PA端口时钟
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1; //配置PA0、PA1端口
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度
    GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA端口,PA0、PA1上电后自动为低电位,LED点亮

    while(1)
    {
        Delay_Ms(500); //延时0.5秒
        (i == 0) ? (i = Bit_SET) : (i = Bit_RESET); //取反语句,即将变量i的布尔值取反
        GPIO_WriteBit(GPIOA, GPIO_Pin_0, i); //LED间隔0.5秒闪烁

    }
}
保存好修改结果,选择项目菜单下全部构建,顺利通过后选择闪存菜单下的下载,即可将编译好的P-001.hex文件下载到核心板。
将核心板上的PA0排针与LED1排针用杜邦线连接,即可看到板载的LED1闪烁。结合裴晓芳主编的《RISC-V架构嵌入式原理与应用——CH32V103单片机编程与项目实践》一书,可以了解GIPO的设置和简单应用。
在上述代码中,多设置了IO口PA1,主要目的是展示设置多个IO口的方法,实际运行结果是LED1接PA1时会长亮而不闪烁。如果没有设置PA1,连接LED时不会亮,说明PA1未被激活生效。

在实际应用项目中使用GPIO时需要注意以下问题,
1、在推挽输出模式下,每个IO口最大拉电流和灌电流不应超过20mA,直接驱动LED或光耦时,通常控制在1.5~3mA左右。如果需要控制大功率外设,可以通过IO口控制MOS管的栅极电压,再控制外设。
2、单片机芯片的最大工作电流不应超过50mA,多个IO口控制外设时,一定要注意芯片的最大工作电流。

  程序代码都在附件中,就不注水了。

MounRiver Studio代码51hei附件下载: P-001.rar (553.75 KB, 下载次数: 16)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:1017814 发表于 2022-4-15 14:04 | 只看该作者
还没有学过这种的单片机,只在学STC52RC。接下来想学这种的单片机了。

弱弱地问一句,GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度

这个是IO口的速度,50MHZ,这么快能看到LED灯闪吗?

我不懂,还没学过,不要见怪呀
回复

使用道具 举报

板凳
ID:161362 发表于 2022-4-17 21:47 | 只看该作者
50M你觉得能看到吗?人眼的极限大概也就50Hz
回复

使用道具 举报

地板
ID:886836 发表于 2022-5-8 11:11 | 只看该作者
人眼的极限大概也就30Hz,,,,,胶片电影的帧速
回复

使用道具 举报

5#
ID:709912 发表于 2022-5-13 10:40 | 只看该作者
wukouyyq 发表于 2022-4-15 14:04
还没有学过这种的单片机,只在学STC52RC。接下来想学这种的单片机了。

弱弱地问一句,GPIO_InitStructur ...

这个是指单片机管脚的响应速度,需要控制LED闪烁的时候用Delay_Ms()就好了
回复

使用道具 举报

6#
ID:87631 发表于 2022-6-22 12:40 | 只看该作者
接触过STM32的很容易就上手,这个单片机在一般应用场合完全可低替STM32B .我现在的全部产品都改成了WCH的了
回复

使用道具 举报

7#
ID:1042195 发表于 2022-8-16 10:54 | 只看该作者
csgtli 发表于 2022-6-22 12:40
接触过STM32的很容易就上手,这个单片机在一般应用场合完全可低替STM32B .我现在的全部产品都改成了WCH的了

正在找这方面的资料,感谢
回复

使用道具 举报

8#
ID:620337 发表于 2022-8-22 10:16 | 只看该作者
这个芯片有什么优势???稳定性如何
回复

使用道具 举报

9#
ID:620337 发表于 2022-9-21 09:27 | 只看该作者
目前发现这个芯片的功能还是比较原始,很多功能不完善,相当于一个很原始的单片机
回复

使用道具 举报

10#
ID:87631 发表于 2022-10-13 11:16 | 只看该作者
fqc168 发表于 2022-8-22 10:16
这个芯片有什么优势???稳定性如何

批量时有的芯片SWD无法下载,其他稳定,没有什么问题,厂家提供的例程编写风格与STM32的基本一致
回复

使用道具 举报

11#
ID:702600 发表于 2024-4-21 09:34 | 只看该作者
开发环境用的是什么?沁恒自己的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表