您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]gpio
本帖共有614个阅读者
发表帖子 发表投票 回复主题
[求助]gpio
eggplant(论坛新手)
eggplant
头衔:社区公民
帮派:无帮无派
帖数:23
金钱:329
积分:33
注册时间:2013/10/29
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]gpio

将管脚1,2配置为输出,初始化拉高

*pFIO_DIR =0x0006;
*pFIO_FLAG_S =0x0006;

下面对bf2操作,bf1被拉低了

delay(1000);
*pFIO_FLAG_C |=0x0004;
delay(1000);
*pFIO_FLAG_S |=0x0004;

菜鸟初学,求帮助,刚才好像发错区了,对不起啊管理


这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/6/3 17:34:57
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
FIO_FLAG_S  为设置IO口为1的寄存器,不需要回读,你设置哪一位,直接赋值即可。
如:
*pFIO_FLAG_S = PF1|PF2;
即可将PF1和PF2 设置为1,头文件已经定义了PF1和PF2,可以直接用。
*pFIO_FLAG_C 为清除寄存器,写1清除该位,也不需要回读,如将PF1清除为0,则:
*pFIO_FLAG_C  = PF1;此操作不会影响PF2的高电平状态。
另外还有个*pFIO_FLAG_D寄存器,
这个寄存器写1即设置为1,写0即为0,需要回读操作,如:
*pFIO_FLAG_D |=   PF1;   拉高
*pFIO_FLAG_D &=  ~ PF1;拉低


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/6/3 23:31:14
Ling_Zero00(论坛新手)
Ling_Zero00
头衔:社区公民
帮派:无帮无派
帖数:37
金钱:436
积分:50
注册时间:2014/9/16
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
您好,头文件对PF1和PF2定义时,是不是也说明了它初始值是高电平还是低电平?

ADSP
等级:论坛新手 参考IP地址:*.*.*.*
2014/9/22 10:20:09
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
定义是将PF1和PF2对应的位设置为1,这样,当你需要将PF1 配置为1时,直接将PF1 或运算到寄存器中,若想将PF1配置为0,直接将PF1取反,然后与运算到寄存器中,如:
*pFIO_FLAG_D |=   PF1;   拉高
*pFIO_FLAG_D &=  ~ PF1;拉低

头文件对PF1和PF2定义,并不是定义了寄存器,仅仅是是做赋值,定义大致如下:
#define PF1 0x0002
#define PF2 0x0004
blackfin系列没有位操作寄存器,你也不能直接把PF1和PF2当做寄存器来使用

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/9/24 21:16:28
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159294 Call, 1 Queries, Processed in 0.015625 second(s),