请问HAL库可以写一列IO口值的函数

2019-07-14 14:18发布

标准库就有这个可以写一列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的赋值?这样效率很低下的吧

谢谢!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
biao66
1楼-- · 2019-07-16 07:15
jfuwre 发表于 2019-1-30 18:16
直接右键,看一下代码实现,不就很清楚了嘛!!!!开源,啥叫开源,就是用来看滴!!!

看的懂那个库函数的,就是找不到GPIO_Write()功能的函数而已,
biao66
2楼-- · 2019-07-16 07:41
苏州名之卓 发表于 2019-1-30 18:24
你的意思是给GPIOC端口赋值0X00F0, 这样赋值不行的,0X00F0 !=0 所以作为 “1”来处理,
这样你GPIOC端口所有的输出都是"1";如果你要按你的意愿来做,只有直接写寄存器。自己做个函数吧。网上例子挺多的。

void IO_Write_DataBit(uchar data)
{
  
  GPIOC->ODR |= 0xff;  
  GPIOC->ODR &= data;
   
}
我也是这样想的,直接操作寄存器算了,上面那个函数应该可以实现了吧
苏州名之卓
3楼-- · 2019-07-16 12:25
苏州名之卓 发表于 2019-1-30 18:24
你的意思是给GPIOC端口赋值0X00F0, 这样赋值不行的,0X00F0 !=0 所以作为 “1”来处理,
这样你GPIOC端口所有的输出都是"1";如果你要按你的意愿来做,只有直接写寄存器。自己做个函数吧。网上例子挺多的。

#define    GPIOCout(x)       GPIOC->ODR=x;      // GPIOC端口输出 X

先把GPIOC都设置为推挽输出,然后试试这个
苏州名之卓
4楼-- · 2019-07-16 18:11
 精彩回答 2  元偷偷看……
biao66
5楼-- · 2019-07-16 21:02
苏州名之卓 发表于 2019-1-30 19:05
";"可以不要写,程序中直接调用"GPIOCout(0x00f0);"

非常感谢了

一周热门 更多>