沁恒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));
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cyjbj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值