GD32F103,LED实验

一、简介

GPIO的英文全称General-Purpose Input/Output ports,中文意思是通用输入/输出端口

二、GPIO输入输出配置模式介绍

每个通用I/0端口都可以通过两个32为的控制寄存器(GPIOxCTL0 / GPIOx_CTL1)和两个32为的数据寄存器(GPIOx_ISTAT,GPIOx_OCTL)配置8中模式如下:

2.1、由于GD32的图过于简化,很多细节没办法表示出来,具体需要参考STM32 GPIO输入输出模式原理(八种工作方式附电路图详解)_gpio四种输入输出模式-优快云博客

三、寄存器介绍

3.1、GPIO寄存器基地址描述

名称

基地址

名称

基地址

GPIOA

0x4001 0800

GPIOE

0x4001 1800

GPIOB

0x4001 0C00

GPIOF

0x4001 1C00

GPIOC

0x4001 1000

GPIOG

0x4001 2000

GPIOD

0x4001 1400

AFIO

0x4001 0000

3.2、端口控制寄存器0(GPIOx_CTL0,x=A~G)

位/位域

名称

描述

[31:30]

[27:26]

[23:22]

……

[3:2]

CTL0~7[1:0]

Portx配置位

该位由软件置位和清除。

输入模式(MD[1:0]=00)

00:模拟输入

01:浮空输入

10:上拉输入/下拉输入

11:保留

输出模式(MD[1:0])>00

00:GPIO推挽输出

01:GPIO开漏输出

10:AFIO推挽输出

11:AFIO开漏输出

[29:28]

[25:24]

[21:20]

……

[1:0]

MD0~7[1:0]

Prot模式位

该位由软件置位和清除

00:输入模式(复位状态)

01:输出模式(10MHz)

10:输出模式(20MHz)

11:输出模式(50MHz)

这个描述参考端口控制寄存器0

3.3、端口输入状态寄存器(GPIOx_ISTAT,x=A~G)

位/位域

名称

描述

[31:16]

保留

必须保持复位值

[15:0]

ISTATy

端口输入状态位(y=0~15)

这些位由软件置位和清零

0:引脚输入信号为低电平

1:引脚输入信号为高电平

3.4、端口输入控制寄存器(GPIOx_OCTL,x=A~G)

3.5、端口位操作寄存器(GPIOx_BOP,x=A~G)

3.6、位清除寄存器(GPIOx_BC,x=A~G)

3.7、端口配置锁定寄存器(GPIOx_LOCK,x=A,B)

3.8、APB2使能寄存器(RCU_APB2EN)

位/位域

名称

描述

[31:22]

保留

必须保持复位值

[21]

TIMer10EN

TIMER10时钟使能

由软件置位或复位

0:关闭TIMER10时钟

1:开启TIMER10时钟

[20]

TIMER9EN

TIMER9时钟使能

由软件置位或复位

0:关闭TIMER9时钟

1:开启TIMER9时钟

[19]

TIMER8EN

TIMER8时钟使能

由软件置位或复位

0:关闭TIMER8时钟

1:开启TIMER8时钟

[18:16]

保留

必须保持复位值

[15]

ADC2EN

ADC2时钟使能

由软件置位或复位

0:关闭ADC2时钟

1:开启ADC2时钟

[14]

USART0EN

USART0时钟使能

由软件置位或复位

0:关闭USART0时钟

1:开启USART1时钟

[13]

TIMER7EN

TIMER7时钟使能

由软件置位或复位

0:关闭TIMER7时钟

1:开启TIMER7时钟

[12]

SPI0EN

SPI0时钟使能

由软件置位或复位

0:关闭SPI0时钟

1:开启SPI0时钟

[11]

TIMER0EN

TIMER0时钟使能

由软件置位或复位

0:关闭TIMER0时钟

1:开启TIMER0时钟

[10]

ADC1EN

ADC1时钟使能

由软件置位或复位

0:关闭ADC1时钟

1:开启ADC1时钟

[9]

ADC0EN

ADC0时钟使能

由软件置位或复位

0:关闭ADC0时钟

1:开启ADC0时钟

[8]

PGEN

GPIO端口G时钟使能

由软件置位或复位

0:关闭GPIO端口G时钟

1:开启GPIO端口G时钟

[7]

PFEN

GPIO端口F时钟使能

由软件置位或复位

0:关闭GPIO端口F时钟

1:开启GPIO端口F时钟

[6]

PEEN

GPIO端口E时钟使能

由软件置位或复位

0:关闭GPIO端口E时钟

1:开启GPIO端口E时钟

[5]

PDEN

GPIO端口D时钟使能

由软件置位或复位

0:关闭GPIO端口D时钟

1:开启GPIO端口D时钟

[4]

PCEN

GPIO端口C时钟使能

由软件置位或复位

0:关闭GPIO端口C时钟

1:开启GPIO端口C时钟

[3]

PBEN

GPIO端口B时钟使能

由软件置位或复位

0:关闭GPIO端口B时钟

1:开启GPIO端口B时钟

[2]

PAEN

GPIO端口A时钟使能

由软件置位或复位

0:关闭GPIO端口A时钟

1:开启GPIO端口A时钟

[1]

保留

必须保持复位值

[0]

AFEN

复位功能IO时钟使能

由软件置位或复位

0:关闭复用功能IO时钟

1:开启复用功能IO时钟

四、程序

4.1、原理图

4.2、函数介绍

4.2.1、rcu_periph_clock_enable(功能:使能外设时钟)

4.2.2、gpio_init(功能:GPIO参数初始化)

4.2.3、gpio_bit_reset(功能:复位引脚值)

4.2.4、gpio_bit_set(功能:置位引脚值)

4.3、程序介绍

图中1:

是初始化IO函数rcu_periph_clock_enable是使能GPIOA时钟,这里面描述可以查看“RCU_APB2EN”寄存器

 gpio_init()就是配置GPIOx_CTL0或GPIOx_CTL1,配置对应的IO,具体参考则两个寄存器对应位

图中2:

Gpio_bit_reset给对应的位写入1,具体描述参考GPIOx_BC寄存器

Gpio_bit_set给对应的位写1,具体描述参考GPIOx_BOP寄存器

其实这两个函数就是控制IO输出低电平或者高电平

从上述程序中可以看出这个程序就是控制LED灯闪烁,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值