微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 扩展IO口的配置

扩展IO口的配置

时间:10-02 整理:3721RD 点击:

hunderboard不但传感器众多,还预留了16个IO口以及GND、5V、3.3V电源接口,方便开发我们自己的应用。
这里我准备使用其中5个IO口,做OLED液晶屏的驱动引脚。

一.准备工作
首先看一下扩展IO的具体分配情况。


配置一下PC6-PC10这5个引脚。查看数据手册得知外设中GPIO的基地址是0x4000A000


GPIO口各个寄存器分布图如下


由上图的寄存器图可知,GPIOC的配置寄存器开始的偏移地址是0x060。
至此OK了,准备工作做好了,不要慌,直接干~~
先测试PC6这个IO口,让其输出高电平之前,先量一下这个引脚的电压(此单片机复位输出低电平)。


竟然有0.64V - - ,我这个表应该挺准的,好吧,也算是低电平。
二.配置相关寄存器
开始配置GPIOC-PIN6,然后让他输出高电平。


首先配置GPIO_PC_CTRL寄存器,首先看第28位,其功能是复用模式输入失能,用不着不管他
位20-22,复用功能下电压摆率,用不着不管他
位16,复用功能下驱动能力,不管他
位12,非复用模式输入失能,可以不管他
位4-6,非复用功能下电压摆率,让它默认值就行
位0,非复用功能下驱动能力,默认是10mAw驱动能力
综上,GPIO_PC_CTRL寄存器让它默认值就好了

接着看GPIO_PC_MODEL寄存器


配置PC6,看下图对应配置位


将其配置为推完输出,那么只需要将 24-27位配置为4
故 *(volatile uint32_t *)(0x4000A000+0x060+0x004) &= ~(15<<24);
    *(volatile uint32_t *)(0x4000A000+0x060+0x004) |= (4<<24);
接下来看GPIO_PC_DOUT寄存器


PC6对应位6,直接将其置位
*(volatile uint32_t *)(0x4000A000+0x060+0x00C) |= (1<<26);

三.测试结果
将以上配置写到之前的工程,编译下载


测量结果


4号孔输出高电平,至此这个配置就成了。周末忘了带老铁回家,不然要焊接个LED测试

单看工具就很专业,正准备做个IO控制的实例。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top