如何把零散的不用的IO整合在一起,统一操作呢

[复制链接]
 楼主| 白丁野老 发表于 2015-11-23 20:17 | 显示全部楼层 |阅读模式
IO, pc, GPIO, pi, gp
以STM32为例,在分配完必要的外设后,留有几组零散的不相干的IO,如何把PB4,PB5, PA6,PA8,PC1,PC2,PC3,PC8整合成一个8位的GPIO口,把0X08这个数分配到这几个GPIO口输出?

麦可可 发表于 2015-11-23 22:34 | 显示全部楼层
可以用宏定义实现的
blong75 发表于 2015-11-23 22:56 | 显示全部楼层
对于你这里所提出的“多个端口赋值”来说,基本上相当于一个无壳的函数。打个比方,例如:
#define SET_PORT_VAL(x) {PTE = x&0x03; PTF = (x>>2)&0x3F;}
冒泡的鱼儿 发表于 2015-11-23 22:59 | 显示全部楼层
写一个赋值函数,先把单独的IO提取出来,再合并
sunriselight 发表于 2015-11-24 11:16 | 显示全部楼层
P2 |= 0X10;
P3 &= 0X00;
t = P2 | P3;
这样写就可以了吧
葫芦娃75 发表于 2015-11-24 11:19 | 显示全部楼层
可以用位域的办法来实现的,用结构体
eggbiscuit 发表于 2015-11-24 11:21 | 显示全部楼层

#define GPIO_BIT_0(x) GPIO_SET(PORTB,PB4,x)
#define GPIO_BIT_1(x) GPIO_SET(PORTB,PB5,x)  
......
然後寫一個function
void GPIO_SetState(uint8_t Data)
{
GPIO_BIT_0((Data&0x01));
GPIO_BIT_1((Data&0x02));
GPIO_BIT_2((Data&0x04));
.......
}
要用就呼叫
GPIO_SetState(0x55);
大概就是這樣子的方式吧

评论

还行  发表于 2019-3-19 09:27
september7 发表于 2015-11-24 11:25 | 显示全部楼层
可以将IO口引脚结构对应到自定义结构中,然后定义不同IO口一个For循环解决。GPIO_WriteBit(GPIOx, GPIO_InitStruct.GPIO_Pin, (BitAction)(dat));
蜕变吧 发表于 2015-11-24 22:59 | 显示全部楼层
eggbiscuit 发表于 2015-11-24 11:21

#define GPIO_BIT_0(x) GPIO_SET(PORTB,PB4,x)
#define GPIO_BIT_1(x) GPIO_SET(PORTB,PB5,x)  

不错,学习了,这是个 很好的办法。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

195

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

12

主题

195

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部