沁恒ch32V208处理器开发(三)GPIO控制
目录
GPIO功能概述
CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一:
1 浮空输入 2 上拉输入 3 下拉输入 4 模拟输入 5 开漏输出 6 推挽输出 7 复用功能的输入和输出
内部结构图如下:

可以看出,IO 口内部可分为输入驱动模块1和输出驱动模块2。其中输入驱动有弱上下拉电阻可选,可连接到 AD 等模拟输入的外设;如果输入到数字外设,就需要经过一个 TTL 施密特触发器,再连接到 GPIO 输入寄存器或其他复用外设。而输出驱动有一对 MOS 管,可通过配置上下的 MOS 管是否使能来将 IO 口配置成开漏或推挽输出;输出驱动内部也可以配置成由 GPIO 控制输出还是由复用的其他外设控制输出。
GPIO寄存器
为了实现上述对端口的灵活配置,处理器设置了一系列寄存器来实现上述功能:
(1)配置输入相关的寄存器
端口输入寄存器(GPIOx_INDR)
GPIO 配置寄存器低位(GPIOx_CFGLR)
GPIO 配置寄存器高位(GPIOx_CFGHR)
(2)配置输出相关的寄存器
端口输出寄存器(GPIOx_OUTDR)
GPIO 配置寄存器低位(GPIOx_CFGLR)
GPIO 配置寄存器高位(GPIOx_CFGHR)
(3)复位和锁定寄存器
端口复位寄存器(GPIOx_BCR)
配置锁定寄存器(GPIOx_LCKR)
(4)AFIO 寄存器
事件控制寄存器(AFIO_ECR)
重映射寄存器 (AFIO_PCFR1) 和(AFIO_PCFR2)
外部中断配置寄存器 (AFIO_EXTICR1、AFIO_EXTICR2、AFIO_EXTICR3、AFIO_EXTICR4)
GPIO实现LED闪烁灯
以PA0接LED灯为例,实现LED灯的间隔500ms闪烁功能,代码实现如下:
LED所在GPIO端口的初始化:
void GPIO_Toggle_INIT(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);
}
Main功能实现
int main(void)
{
u8 i = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
printf("GPIO Toggle TEST\r\n");
GPIO_Toggle_INIT();
while(1)
{Delay_Ms(500);GPIO_WriteBit(GPIOA, GPIO_Pin_0, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));
}
}
相关文章:
沁恒ch32V208处理器开发(三)GPIO控制
目录 GPIO功能概述 CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一: 1 浮空输入 2 上拉输入…...
Jenkins 中 shell 脚本执行失败却不自行退出
Jenkins 中 执行 shell 脚本时,有时候 shell 执行失败了,或者判断结果是错误的,但是 Jenkins 执行完成后确提示成功 success 。 此时,可以通过条件判断来解决这个问题,让 Jenkins 强制退出并提示执行失败 failed 。 …...
2021年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
第1题:输出整数部分 输入一个双精度浮点数f, 输出其整数部分。 时间限制:1000 内存限制:65536 输入 一个双精度浮点数f(0 < f < 100000000)。 输出 一个整数,表示浮点数的整数部分。 样例输入 3.8889 样例输出 3 下面是一个使用C语言编写的输出双精度浮点数整数部分…...
有哪些可以用于性能测试方法?【举例说明】
1.负载测试 在这里,负载测试指的是最常见的验证一般性能需求而进行的性能测试,在上面我们提到了用户最常见的性能需求就是“既要马儿跑,又要马儿少吃草”。因此负载测试主要是考察软件系统在既定负载下的性能表 现。我们对负载测试可以有如下…...
Linux进程管理命令
一、进程 程序由一条条指令构成,在运行一个程序的时候就是把这些指令从第一条执行到最后一条,而进程是一个正在运行的程序。 比如说,一个main.c文件是不可以直接运行的,对main.c进行编译链接之后生成一个main.exe(在W…...
pytest 常用命令参数
-x 用例一旦失败或错误时就立即停止执行 共两条用例,运行第一条报错失败或报错,第二条就不会执行 pytest -vs -x test_pytest_study.py::TestCommon1 共2条用例,当执行到第一条失败时候,第二条不执行 --maxfailnum …...
从安装 Seata 开始的分布式事务之旅 springboot集成seata
从安装 Seata 开始的分布式事务之旅 介绍什么是 Seata? 安装 Seata Server下载 Seata Server 发行版配置Seata解压文件配置Seata的yml文件把配置文件config.txt加载到nacos上修改config.txt文件加载到nacos上 启动Seata服务正常启动查看启动日志打开控制台页面 启动…...
Laravel 使用mix引入本地样式文件 报错 Unable to locate Mix处理
刚下了一个bootstrap样式文件,mix引入了一下,直接报错: Unable to locate Mix file: /css/bootstrap.min.css. (View: D:\phpEnv\www\abc\resources\views\admin\noteAdd.blade.php)原来是需要 npm run dev 启动一下 ✔ Compiled Successfu…...
QT学习笔记-QT安装oracle oci驱动
QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中,往…...
【React学习】—类的基本知识(五)
【React学习】—类的基本知识(五) <script>// 创建一个Person类class Person{//构造器方法constructor(name,age){this.namename;this.ageage;}//一般方法speak(){//speak方法一般放在哪里?类的原型上,供实例使用//通过Pers…...
【AI】《动手学-深度学习-PyTorch版》笔记(十六):自定义网络层、保存/加载参数、使用GPU
AI学习目录汇总 1、自定义网络层 自定义网络层很简单,三步即可完成 继承类:nn.Module定义初始化函数:__init__中定义需要初始化的代码定义向前传播函数:forward1.1 不带参数的网络层 1)定义网络层 import torch import torch.nn.functional as F from torch import nn…...
微软杀入Web3:打造基于区块链的AI产品
作者:秦晋 2023年1月,微软向 ChatGPT 创建者 OpenAI 投资 100 亿美元,在AI业界引发格外关注。此举也让微软在AI的战略探索上提前取得有利位置。 2023年3月,微软软件工程师 Albacore 披露微软正在为Edge 浏览器测试内置的非托管加密…...
聊聊51单片机
目录 1.介绍 2.发展 3.应用领域 4.发展前景 1.介绍 51单片机(AT89C51)是一种常见的8位微控制器,属于Intel MCS-51系列。它是一种低功耗、高性能的单片机,广泛应用于嵌入式系统中。 51单片机具有很多特点和功能,例如…...
Linux yum 命令,Linux apt 命令
目录 Linux yum 命令 yum 语法 yum常用命令 实例 1 实例 2 实例 3 国内 yum 源...
Vue+SpringBoot项目开发:登录页面美化,登录功能实现(三)
写在开始:一个搬砖程序员的随缘记录上一章写了从零开始VueSpringBoot后台管理系统:Vue3TypeScript项目搭建 VueTypeScript的前端项目已经搭建完成了 这一章的内容是引入element-plus和axios实现页面的布局和前后端数据的串联,实现一个登陆的功能&#x…...
2.若依前后端分离版第一个增删查改
1.介绍 若依提供了代码生成功能,单表的CRUD可以直接用若依框架提供的代码生成进行创建。 2.实现 2.1 在数据库创建业务表test_teacher 2.2 生成代码 运行系统,进入菜单[系统工具]-》[代码生成],点击导入按钮,选择需要生成代码的表进行导…...
javaSE_2.2——【方法的介绍】
1.方法的定义 (1)方法声明的语法规则如下所示: [修饰符] 返回值类型 方法名称([参数列表]){// 方法体 } 方法修饰符:是一种关键字,用来描述方法、类、变量等各种元素的声明,一个程序可以同时拥有多个修饰…...
【02】基础知识:typescript数据类型
1、布尔类型 boolean let flag: boolean false2、数字类型 number let num: number 6 //十进制 let num2: number 0xf00d //十六进制 let num3: number 0b1010 //二进制 let num4: number 0o744 //八进制3、字符串类型 string 用双引号(“)或单引…...
DIP: NAS(Neural Architecture Search)论文阅读与总结(双份快乐)
文章地址: NAS-DIP: Learning Deep Image Prior with Neural Architecture SearchNeural Architecture Search for Deep Image Prior 参考博客:https://zhuanlan.zhihu.com/p/599390720 文章目录 NAS-DIP: Learning Deep Image Prior with Neural Architecture Search1. 方法…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...
Java面试专项一-准备篇
一、企业简历筛选规则 一般企业的简历筛选流程:首先由HR先筛选一部分简历后,在将简历给到对应的项目负责人后再进行下一步的操作。 HR如何筛选简历 例如:Boss直聘(招聘方平台) 直接按照条件进行筛选 例如:…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
