当前位置: 首页 > news >正文

沁恒ch32V208处理器开发(三)GPIO控制

目录

GPIO功能概述

CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一:

		1	浮空输入 2	上拉输入 3	下拉输入 4	模拟输入 5	开漏输出 6	推挽输出 7	复用功能的输入和输出

内部结构图如下:
://img-blog.csdnimg.cn/479f410fc2924365b37164a2be565cc2.png)
可以看出,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));
}

}

http://www.lryc.cn/news/119809.html

相关文章:

  • Jenkins 中 shell 脚本执行失败却不自行退出
  • 2021年12月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • 计算机网络 网络层 IPv4数据报
  • 有哪些可以用于性能测试方法?【举例说明】
  • Linux进程管理命令
  • pytest 常用命令参数
  • 从安装 Seata 开始的分布式事务之旅 springboot集成seata
  • Laravel 使用mix引入本地样式文件 报错 Unable to locate Mix处理
  • QT学习笔记-QT安装oracle oci驱动
  • 【React学习】—类的基本知识(五)
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十六):自定义网络层、保存/加载参数、使用GPU
  • 微软杀入Web3:打造基于区块链的AI产品
  • 聊聊51单片机
  • Linux yum 命令,Linux apt 命令
  • Vue+SpringBoot项目开发:登录页面美化,登录功能实现(三)
  • 2.若依前后端分离版第一个增删查改
  • javaSE_2.2——【方法的介绍】
  • 【02】基础知识:typescript数据类型
  • DIP: NAS(Neural Architecture Search)论文阅读与总结(双份快乐)
  • AI:02-基于深度学习的动物图像检索算法的研究
  • IDEA项目实践——Spring集成mybatis、spring当中的事务
  • 6-Ngnix配置反向代理
  • 构建 LVS-DR 群集、配置nginx负载均衡。
  • 【UE4的垃圾回收】
  • nginx负载均衡的几种配置方式介绍
  • uniapp发布插件显示components/xxx文件没找到,插件格式不正确
  • Kubernetes(K8s)入门
  • [前端系列第3弹]JS入门教程:从零开始学习JavaScript
  • html 计算器界面
  • 性能测试工具——LoadRunner(1)