GD32开发实战指南(基础篇) 第2章 初始GPIO流水灯-环球快看
开发环境:
MDK:Keil5.30
开发板:GD32F207I-EVAL
(相关资料图)
MCU:GD32F207IK
1 GPIO工作原理
熟悉单片机的朋友都知道,学习的第一个例程就是流水灯,要想实现流水灯,首先必须了解GPIO的工作原理。GPIO的基本结构如下图所示。
GD32 的 IO 口可以由软件配置成如下 8 种模式:
输入模式浮空输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。通俗讲就是让管脚什么都不接,浮空着。信号进入芯片内部后,既没有接上拉电阻也没有接下拉电阻,经由触发器输入。配置成这个模式后,用电压变量引脚电压为1点几伏,这是个不确定值。由于其输入阻抗比较大,一般把这种模式用于标准的通讯协议,比如IIC、USART的等。该模式是GD32复位之后的默认模式。上拉输入:上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平,电阻同时起限流作用,弱强只是上拉电阻的阻值不同,没有什么严格区分。上拉输入就是信号进入芯片后加了一个上拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为高电平。下拉输入:就是把电压拉低,拉到GND。与上拉原理相似。下拉输入就是信号进入芯片后加了一个下拉电阻,再经过施密特触发器转换成0、1信号,读取此时的引脚电平为低电平。模拟输入:信号进入后不经过上拉电阻或者下拉电阻,关闭施密特触发器,经由另一线路把电压信号传送到片上外设模块。模拟输入是指传统方式的输入,数字输入是输入PCM数字信号,即0、1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。比如传送给ADC模块,由ADC采集电压信号。所以可以理解为模拟输入的信号是未经处理的信号,是原汁原味的信号。输出模式开漏输出:一般用在电平不匹配的场合,如需要输出5V的高电平。输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。复用开漏输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。端口必须配置成复用开漏功能输出模式。推挽式输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。推挽式复用输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。端口必须配置成复用推挽功能输出模式。2 I/O复用和重映射
2.1 I/O复用
GD32 有很多的内置外设,这些外设的外部引脚都是与 GPIO 复用的。也就是说,一个 GPIO如果可以复用为内置外设的功能引脚,那么当这个 GPIO 作为内置外设使用的时候,就叫做复用。当I/O端口被配置为复用功能时:
● 在开漏或推挽式配置中,输出缓冲器被打开
● 内置外设的信号驱动输出缓冲器(复用功能输出)
● 施密特触发输入被激活
● 弱上拉和下拉电阻被禁止
● 在每个APB2时钟周期,出现在I/O脚上的数据被采样到输入数据寄存器
● 开漏模式时,读输入数据寄存器时可得到I/O口状态
● 在推挽模式时,读输出数据寄存器时可得到最后一次写的值
大家都知道,MCU 都有串口,GD32 有好几个串口。比如说 GD32F207IK有 8个串口,我们可以查手册知道,串口 0 的引脚对应的 IO 为 PA9,PA10.PA9, PA10 默认功能是 GPIO, 所以当PA9,PA10 引脚作为串口0的 TX,RX 引脚使用的时候,那就是端口复用。
USART0_TX | PA9 |
---|---|
USART0_RX | PA10 |
关于串口的内容后面的章节会详细讲解。
2.2 I/O重映射
为了使不同器件封装的外设 IO 功能数量达到最优,可以把一些复用功能重新映射到其他一些引脚上。 GD32 中有很多内置外设的输入输出引脚都具有重映射(remap)的功能。 我们知道每个内置外设都有若干个输入输出引脚,一般这些引脚的输出端口都是固定不变的,为了让设计工程师可以更好地安排引脚的走向和功能,在 GD32中引入了外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。
复用功能 | USART1_REMAP = 0 | USART1_REMAP = 1 |
---|---|---|
USART0_TX | PA9 | PB6 |
USART0_RX | PA10 | PB7 |
从表中可以看出,默认情况下,串口 0复用的时候的引脚位 PA9、PA10,同时我们可以将 TX 和 RX 重新映射到管脚 PB6 和 PB7 上面去。所以重映射我们同样要使能复用功能的时候讲解的 2 个时钟外,还要使能 AFIO 功能时钟,然后要调用重映射函数。
3 GPIO流水灯硬件电路分析
发光二极管是属于二极管的一种,具有二级管单向导电特性,即只有在正向电压(二极管的正极接正,负极接负)下才能导通发光。PF6引脚接发光二极管(LED1)的正极,所以PF6引脚输出高电平LED1亮,PF6引脚输出低电平LED1熄灭,其他LED同理。
值得注意的,不同的开发板,LED连接的GPIO一般是不同的,请注意修改。
4 GPIO流水灯寄存器分析
要想真正掌握一款单片机,分析寄存器是必不可少,但是对于GD32来再说,GD已经将寄存器操作封装成库函数,开发者只需要调用库函数即可,对于初学者来说,只需学会使用使用函数即可,对于没有基础的读者朋友就不必细究每个寄存器,当学到一定程度,再来一探究竟吧,笔者再这里只是给出GPIO的寄存配置相关配置表,在后面的章节也是如此。好了,继续进入正题吧。
每个GPIO端口都有两个32位配置寄存器(GPIO_CTL0 ,GPIO_CTL1) ,两个16位数据寄存器 (GPIO_ISTAT和GPIO_OCTL),一个32位置位寄存器(GPIO_BOP),一个16位复位寄存器(GPIO_BC),一个16位锁定寄存器(GPIO_LOCK)。每个I/O端口位可以自由编程。
点亮LED,基本步骤是:配置寄存器;控制寄存器。库开发只是将传统的配置方式编程函数,是的单片机开发变得简单方便快捷。
我们常用的 IO 端口寄存器只有 4 个: GPIO_CTL0、GPIO_CTL1、 GPIO_OCTL、 GPIO_BOP。其中GPIO_CTL0、GPIO_CTL1 控制着每个 IO 口的模式及输出速率。
GPIO_CTL0、GPIO_CTL1类似,读者朋友可以参看《GD32F10x_User_Manual_EN_Rev2.4》数据输入输出寄存器是将对应的IO口置位,从而进行数据的输入与输出。
5 GPIO 流水灯实现流程
笔者在上文已经分析了GPIO的原理及操作步骤,现在我们就来写代码吧。
GPIO是开发GD32最基本的配置,所以掌握GPIO的配置显得尤为重要。要实现流水灯,一般步骤可以总结为如下:
GPIO 时钟使能;GPIO 端口模式设置;初始化IO口;编写处理函数;6 GPIO 流水灯实现
6.1 GPIO库函数
GPIO库函数相关的库函数如下:
gpio_deinit 复位外设GPIOgpio_afio_deinit 复位AFIOgpio_init GPIO参数初始化gpio_bit_set 置位引脚值gpio_bit_reset 复位引脚值gpio_bit_write将特定的值写入引脚gpio_port_write 将特定的值写入一组端口gpio_input_bit_get 获取引脚的输入值gpio_input_port_get 获取一组端口的输入值gpio_output_bit_get 获取引脚的输出值gpio_output_port_get 获取一组端口的输出值gpio_pin_remap_config 配置GPIO引脚重映射gpio_pin_remap1_config 配置GPIO引脚重映射1gpio_exti_source_select 选择哪个引脚作为EXTI源gpio_ethernet_phy_select 以太网MII或RMII PHY选择gpio_event_output_config 配置事件输出gpio_event_output_enable 事件输出使能gpio_event_output_disable 事件输出禁能gpio_pin_lock 相应的引脚配置被锁定6.2 流水灯代码实现
主函数代码如下:
/* brief main function param[in] none param[out] none retval none*/int main(void){ /* configure LED1 GPIO port */ led_init(LED1); /* configure LED2 GPIO port */ led_init(LED2); /* configure LED3 GPIO port */ led_init(LED3); /* configure LED4 GPIO port */ led_init(LED4); while(1) { /* turn on LED1, turn off LED4 */ led_on(LED1); led_off(LED4); /*delay about 500ms*/ delay(0xffffff); /* turn on LED2, turn off LED1 */ led_on(LED2); led_off(LED1); /*delay about 500ms*/ delay(0xffffff); /* turn on LED3, turn off LED2 */ led_on(LED3); led_off(LED2); /*delay about 500ms*/ delay(0xffffff); /* turn on LED4, turn off LED3 */ led_on(LED4); led_off(LED3); /*delay about 500ms*/ delay(0xffffff); }}
代码还是比较简单的,首先开启GPIO的时钟,然后对GPIO初始化,主要是设置模式和速率,GPIO的初始化代码如下:
/* brief configure led GPIO param[in] lednum: specify the led to be configured arg LED1 arg LED2 arg LED3 arg LED4 param[out] none retval none*/void led_init(led_typedef_enum lednum){ /* enable the led clock */ rcu_periph_clock_enable(GPIO_CLK[lednum]); /* configure led GPIO port */ gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN[lednum]); GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum];}
然后就可以控制GPIO高低电平了。
7 实验现象
将编译好的程序下载到板子中,可以看到四个LED灯依次闪烁。
审核编辑:汤梓红
标签:
精彩推送
i9 + RTX 4060 售价 6999 元,机械革命新款旷世 16 Pro 游戏本开售|焦点简讯
5月4日消息,机械革命旷世16Pro游戏本笔记本电脑今日开启预售抢购,i9-12900HX+RTX4060,6999元主要配置和
2022年跨境电商市场规模15.7万亿元 同比增长10.56%
5月4日,网经社电子商务研究中心发布了《2022年度中国电子商务市场数据报告》。《报告》显示,2022年中国跨
下半年出现厄尔尼诺现象可能性正在增加 WMO:或加剧全球升温
当地时间3日,世界气象组织(WMO)发布最新通报显示,2023年晚些时候出现厄尔尼诺现象的可能性正在增加。WM
2023一级建造师《机电工程》每日测试题(05月04日)_实时焦点
2023一级建造师《机电工程》每日测试题(05月04日)由一级建造师考试栏目提供,查找更多2023一级建造师《机电
新闻快讯
X 关闭
X 关闭
新闻快讯
- GD32开发实战指南(基础篇) 第2章 初始GPIO流水灯-环球快看
- 华大智造:公司未被列入实体清单 不会因关联方被列入实体清单而受限制 速看料
- 三亚一“奢华别墅”生死局:销售款被集团公司抽走了 天天观焦点
- 今日关注:加快建立房地产发展新模式 着力稳定房企预期
- 全球热点评!辽宁预计今年为全省参保经营主体减负近30亿元
- 捷安高科(300845.SZ)监事杜艳齐已减持91万股 数量过半
- 世界焦点!日本政府应停止强推核污染水排海计划(国际论坛)
- 全球热点!秦岚魏大勋雨中超亲密
- 凯恩:我们会全力支持梅森 若进入欧会杯是很好的赢得奖杯的机会 天天精选
- 里弗斯:率先进入比赛状态的队能赢球 有考虑过摆小阵容
- 国常会明确部署加快建设充电基础设施;科大讯飞发布讯飞星火认知大模型|明日主题前瞻|环球今日报
- log函数图像公式大全_log函数图像 全球聚看点
- 环球焦点!报关与国际货运就业方向辽宁_报关与国际货运就业方向
- 精选!火灾逃生自救七招_略写_火灾逃生有什么自救方法
- C罗前女友埃扎戴墨镜出门,网友:这身穿搭相当时髦!-全球快看
- 动态焦点:斯巴鲁Crosstrek,19.98万的进口四驱车,弹性粘合车架
- 全球即时看!特色研学教育助力“红光印象”乡村产业振兴
- 摩罗丹能长期服用吗?有没有副作用?_摩罗丹能长期服用
- 世界观点:广州争首胜,齐鲁德比上演,孙新波斗法刘金东,中甲中乙今天7战
- 陆河县气象台发布暴雨橙色预警【II级/严重】【2023-05-07】
- 逛乳山 踩沙滩 摘绿茶
- 《保卫萝卜4》周赛5.5策略西游周赛5月5日策略
- 这个“五一”,深圳好“热”|深圳城事周榜(5.1—5.7)
- 焦点报道:联合国工作组:美国应加大力度解决执法中种族不平等问题
- 二维码制作教程_二维码制作-天天通讯
- 2023年一季度黑龙江各市GDP排行榜 哈尔滨排名第一 大庆排名第二
- 全球快资讯丨华安证券给予道森股份买入评级,洪田科技并表业绩符合预期,传统+复合铜箔设备双轮驱动
- “老人推倒摩托车案”执行款到账,车主:希望维权经验能帮到别人|天天微头条
- 一张售价10万元的采砂单子,是谁撕开了制度口子 世界视点
- 中国上市公司协会:前4月IPO保持常态化发行 市场运行平稳
- 巴菲特:相信我,现金不是垃圾
- 传统民俗迎立夏 今日要闻
- 叶底藏花一度梦里踏雪几回什么意思_叶底藏花一度 梦里踏雪几回什么意思 天天精选
- 女盗贼起名_女盗贼名字_世界动态
- 2023年宁波中考中招政策出台
- 美国推演不好意思宣布结果,美军在亚太的军事存在会被全部消灭 每日动态
- 全球新动态:暴雨预警!江西省启动防汛四级应急响应
- 2C1A Anker100瓦氮化镓199元
- 播报:殡仪馆招投标确定一家餐馆服务办丧群众,领导组织员工免费“试菜”受处分
- 每日时讯!全球连线 | 中医针灸在阿尔及利亚广受欢迎
- 当前快报:正邪不两立上(关于正邪不两立上介绍)
- 天天快消息!新风系统行业市场多大?2023新风系统行业发展趋势及市场现状分析
- 欧冠各国名额分配_欧冠资格分配
- 探访湖南怀化国际陆港:“港”通东盟活力足-世界新要闻
- 世界播报:伊莲霍莱斯 伊莲
- 乌军称击落一枚“匕首”高超音速导弹俄方暂未回应
- 一直游到海水变蓝_环球滚动
- 今日看点:聚焦高质量发展|“三新”潮涌 从广交会看中国外贸新动能
- 长方形周长计算公式三年级_长方形周长计算公式
- 蜻蜓是人类的什么(蜻蜓是人类的什么填空)