队长shiwo 发表于 2017-3-14 17:25:20

求助个HAL库函数问题--关于IO口写函数

标准库就有这个可以写一列IO口值的函数:void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);

HAL库的是没有的吗?

HAL库只找到这个位写函数:void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);

可不可以把这个参数赋值为 GPIO_PIN_All的?

要自己用寄存器写一个?一个一个IO的赋值?这样效率很低下的吧

谢谢!


creep 发表于 2017-3-14 18:04:29

可以all:
GPIO_PIN_All
也可以或:
GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_6

奏奏奏 发表于 2017-3-14 18:44:53

感谢版主的解说,我现在才知道可以写GPIO_PIN_All:lol

队长shiwo 发表于 2017-3-14 18:51:42

creep 发表于 2017-3-14 18:04
可以all:
GPIO_PIN_All
也可以或:


这样子用HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,x)会有下面的警告的,说参数类型不匹配,参数好像只能是0/1的吧
warning:#188-D: enumerated type mixed with another type

队长shiwo 发表于 2017-3-14 18:52:55

奏奏奏 发表于 2017-3-14 18:44
感谢版主的解说,我现在才知道可以写GPIO_PIN_All

刚用HAL库,发现没有了Write_GPIO();所以就找到了GPIO_PIN_All

队长shiwo 发表于 2017-3-14 18:56:27

creep 发表于 2017-3-14 18:04
可以all:
GPIO_PIN_All
也可以或:

假如我要把数据0x68写到PC0-PC7,0x68=0110 1000B,这样就是PC0=0,PC1=1.....,该用哪个库函数一次性搞定呢

creep 发表于 2017-3-14 19:12:27

队长shiwo 发表于 2017-3-14 18:51
这样子用HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,x)会有下面的警告的,说参数类型不匹配,参数好像只能是0 ...

发代码看下

zhao.zhao 发表于 2017-3-15 08:26:03

既然写引脚的时候可以用"|"来连接,那么也可以用“GPIO_PIN_All”,所以应该可以的,前提是前面引脚都要初始化为输出。
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_All, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_All, GPIO_PIN_SET);

队长shiwo 发表于 2017-3-15 08:42:24

creep 发表于 2017-3-14 19:12
发代码看下

#define IO_Data_Set(x)      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,(x&0x00f0))

队长shiwo 发表于 2017-3-15 08:45:32

zhao.zhao 发表于 2017-3-15 08:26
既然写引脚的时候可以用"|"来连接,那么也可以用“GPIO_PIN_All”,所以应该可以的,前提是前面引脚都要初 ...

#define IO_Data_Set(x)      HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,(x&0x00f0))
这样子行不行的
页: [1] 2
查看完整版本: 求助个HAL库函数问题--关于IO口写函数