打印

请教一个关于STM32 GPIO 的函数问题!!

[复制链接]
2910|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yueqiang32|  楼主 | 2011-10-4 14:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
函数GPIO_ReadInputDataBit 和函数GPIO_ReadOutputDataBit 各表示什么意思,有什么区别,两个函数分别在什么情况使用?
真的,有点困惑 一个是数据输入读取和数据输出读取?
我在调试屏时,开始用前面那个函数怎么读都去高电平,IO口配置是浮空输入。用后面那个函数时读取正常,IO口配置是推免输出。
还有点得解得是配置推免输出 怎么能够读取液晶屏的输入忙信号呢?
望哪位高人 给予解释!!

相关帖子

沙发
zhl100| | 2011-10-4 16:36 | 只看该作者
我怎么模糊的记得没用过这两个,看看输入输出的例程吧
要是没输出,看看时钟配置行不行

使用特权

评论回复
板凳
yuyi21ic| | 2011-10-4 20:00 | 只看该作者
以前写键盘程序的时候用到过类似的函数:
    //线反转法扫描键盘
   // KeyPort = 0x0f; 此句为对应的51代码

GPIO_Key_Out(H4|L4);  //高四位推挽输出,GPIOD7~GPIOD4为H4,GPIOD3~GPIOD0为L4       

GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD)&0xff00));        //先清除低8位
GPIO_Write(GPIOD,(GPIO_ReadOutputData(GPIOD))|0x000f);
GPIO_Key_In(L4);   //低四位浮空输入
       
//key_temp = KeyPort; 此句为对应的51代码
key_tempA = ((u8)GPIO_ReadOutputData(GPIOD))&0xf0;                 //读取GPIOD的高四位的值
key_tempB = ((u8)GPIO_ReadInputData(GPIOD))&0x0f;                 //读取GPIOD的低四位的值
key_tempB |= key_tempA;

使用特权

评论回复
地板
yueqiang32|  楼主 | 2011-10-5 21:51 | 只看该作者
key_tempA = ((u8)GPIO_ReadOutputData(GPIOD))&0xf0;                 //读取GPIOD的高四位的值
key_tempB = ((u8)GPIO_ReadInputData(GPIOD))&0x0f;                 //读取GPIOD的低四位的值


是否这两句语句都能够把数据读取出来?请问知道它们区别到底在哪里呢?

使用特权

评论回复
5
yuands| | 2011-10-6 11:28 | 只看该作者
IO做输入,用GPIO_ReadInputDataBit
IO做输出,用GPIO_ReadOutputData

使用特权

评论回复
6
yueqiang32|  楼主 | 2011-10-6 19:55 | 只看该作者
那么如果我配置IO做输出,用GPIO_ReadOutputData读取外围输入信号可行吗?
比如,我把液晶屏测忙这个引脚接上,能测出忙碌信号来吗?

使用特权

评论回复
7
yueqiang32|  楼主 | 2011-10-9 14:11 | 只看该作者
5# yuands

那么如果我配置IO做输出,用GPIO_ReadOutputData读取外围输入信号可行吗?
比如,我把液晶屏测忙这个引脚接上,能测出忙碌信号来吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

18

帖子

1

粉丝