如何把零散的不用的IO整合在一起,统一操作呢
以STM32为例,在分配完必要的外设后,留有几组零散的不相干的IO,如何把PB4,PB5, PA6,PA8,PC1,PC2,PC3,PC8整合成一个8位的GPIO口,把0X08这个数分配到这几个GPIO口输出?可以用宏定义实现的 对于你这里所提出的“多个端口赋值”来说,基本上相当于一个无壳的函数。打个比方,例如:
#define SET_PORT_VAL(x) {PTE = x&0x03; PTF = (x>>2)&0x3F;} 写一个赋值函数,先把单独的IO提取出来,再合并 P2 |= 0X10;
P3 &= 0X00;
t = P2 | P3;
这样写就可以了吧 可以用位域的办法来实现的,用结构体 先
#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);
大概就是這樣子的方式吧 可以将IO口引脚结构对应到自定义结构中,然后定义不同IO口一个For循环解决。GPIO_WriteBit(GPIOx, GPIO_InitStruct.GPIO_Pin, (BitAction)(dat)); 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)
不错,学习了,这是个 很好的办法。
页:
[1]