求一个同时读取8个IO输入的操作(PF0-PF7)

2019-07-20 08:10发布

求一个同时读取8个IO输入的操作(PF0-PF7),然后把他们放到一个 内存中,用16进制表示。自己是这样实现的

unsigned char  data=0;
data =GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_7);//8位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_6);//7位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_5);//6位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_4);//5位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_3);//4位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_2);//3位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_1);//2位
   data << 1;
   data |= GPIO_ReadInputDataBit(GPIOF,GPIO_Pin_0);//1位

这样很浪费时间,没有一起直接操作的吗?就像发送这样
#define Dataout(x)   GPIO_Write(GPIOF,x)   //声明低8位输出
直接操作Dataout(data) 就好了

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
14条回答
mack13013
1楼-- · 2019-07-20 12:36
 精彩回答 2  元偷偷看……
屋脊雀
2楼-- · 2019-07-20 18:05
GPIO_ReadInputData
貌似大神
3楼-- · 2019-07-20 20:19
 精彩回答 2  元偷偷看……
屋脊雀
4楼-- · 2019-07-21 01:26
 精彩回答 2  元偷偷看……
貌似大神
5楼-- · 2019-07-21 05:03
屋脊雀 发表于 2018-5-14 17:46
你意思是:调用这个函数就必须16个脚全部设置为输入?
据我的认识,就算我只用一个管脚,我也可以用这个 ...

这个方法可以用,但是 项目导致的引脚数本来就不多了,想尽量节省资源
屋脊雀
6楼-- · 2019-07-21 10:11
貌似大神 发表于 2018-5-14 18:15
这个方法可以用,但是 项目导致的引脚数本来就不多了,想尽量节省资源

大哥,你还是不明白,这个函数怎么会影响你的资源呢?
PF0-PF7接按键输入
PF8-PF15其他,随便,做什么功能都可以
ColSta = GPIO_ReadInputData(GPIOF);
ColSta低八位就是你要的状态。
哪里浪费资源了?

如果是我没看懂,请指正。

一周热门 更多>