2994|8

252

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

如何对多个管脚操作 [复制链接]

我想问下,用库函数,如何能够对一组管脚进行操作,比如直接把数据给GPIOB(其中包括GPIO0--GPIO7),难道还要一个位一个位的处理吗?GPIOPinWrite好像不行。

最新回复

就是这样的 GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7|GPIO_PIN_6......|GPIO_PIN_0,data)  详情 回复 发表于 2012-8-5 14:29

点评

GPIOPinWrite最后的一个参数是一个实际8位有效的变量,每一位对应的是P7-P0的值。如果要对PB7和PB6输出高,应为GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6|GPIO_PIN_7, 0xC0),而不是GPIOPinWrite(GPIO_PORTB_BASE,  详情 回复 发表于 2012-8-2 17:24
 
点赞 关注

回复
举报

400

帖子

0

TA的资源

五彩晶圆(中级)

沙发
 
用GPIOPinWrite可以直接对多个PIN操作:
例如
1. 对PORTB的0,1管脚设置1的操作可以这样写:
GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1,GPIO_PIN_0|GPIO_PIN_1)
2. 对PORTB的管脚0,1设置成0,1
GPIOPinWrite(GPIO_PORTB_BASE,GPIO_PIN_0|GPIO_PIN_1,GPIO_PIN_1)
 
 

回复

86

帖子

0

TA的资源

一粒金砂(高级)

板凳
 

回复 楼主 feiante 的帖子

GPIOPinWrite最后的一个参数是一个实际8位有效的变量,每一位对应的是P7-P0的值。如果要对PB7和PB6输出高,应为GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6|GPIO_PIN_7, 0xC0),而不是GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6|GPIO_PIN_7, 1)。在宏定义里GPIO_PIN_7为0x80,GPIO_PIN_6为0x40。所以也可以写成GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_6|GPIO_PIN_7, GPIO_PIN_6|GPIO_PIN_7)。

[ 本帖最后由 ultrabenz 于 2012-8-2 17:25 编辑 ]
 
 
 

回复

252

帖子

0

TA的资源

一粒金砂(高级)

4
 
哦,原来是这样,谢谢啦。
那么如果像液晶屏,数据口是8位,输出的数据假如是data,那么是不是要一位一位的判断data是0还是1,然后在按上面的方式写呢?
还有个疑问是:为什么我每次给某位写1时用GPIO_PIN_X,写0时是~GPIO_PIN_X才正确,不能直接是“0”或“1”

点评

在 GPIO.h 中是这么定义的。 #define GPIO_PIN_0 0x00000001 // GPIO pin 0 #define GPIO_PIN_1 0x00000002 // GPIO pin 1 #define GPIO_PIN_2 0x00000004 // GPIO p  详情 回复 发表于 2012-8-3 15:10
 
 
 

回复

918

帖子

0

TA的资源

纯净的硅(中级)

5
 

回复 4楼 feiante 的帖子

在 GPIO.h 中是这么定义的。
#define GPIO_PIN_0              0x00000001  // GPIO pin 0
#define GPIO_PIN_1              0x00000002  // GPIO pin 1
#define GPIO_PIN_2              0x00000004  // GPIO pin 2
#define GPIO_PIN_3              0x00000008  // GPIO pin 3
#define GPIO_PIN_4              0x00000010  // GPIO pin 4
#define GPIO_PIN_5              0x00000020  // GPIO pin 5
#define GPIO_PIN_6              0x00000040  // GPIO pin 6
#define GPIO_PIN_7              0x00000080  // GPIO pin 7
 
 
 

回复

252

帖子

0

TA的资源

一粒金砂(高级)

6
 
恩,谢谢,版主回答了我第二个问题。
第一个问题如何处理比较方便点呢?
不会是GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7|GPIO_PIN_6......|GPIO_PIN_0,data)?

点评

就是这样的 GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7|GPIO_PIN_6......|GPIO_PIN_0,data)  详情 回复 发表于 2012-8-5 14:29
 
 
 

回复

252

帖子

0

TA的资源

一粒金砂(高级)

7
 
要沉下去了,、、、、、
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

8
 

回复 6楼 feiante 的帖子

就是这样的 GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_7|GPIO_PIN_6......|GPIO_PIN_0,data)
 
 
 

回复

252

帖子

0

TA的资源

一粒金砂(高级)

9
 
非常感谢!!!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表