[讨论] HAL库的GPIO操作语句不懂,请教一下大家

记忆的永恒   2020-7-7 16:42 楼主

HAL_GPIO_WritePin(GPIOB, 1, 0);
HAL_GPIO_WritePin(GPIOB, 4, 0);
HAL_GPIO_WritePin(GPIOB, 8, 0);
HAL_GPIO_WritePin(GPIOB, 32, 0);
GPIO_InitStruct.Pin = 1;
HAL_GPIO_WritePin(GPIOB, 16, num[b%10][i]);
上面的这些语句表示什么意思?有没有其他的写法?

回复评论 (6)

HAL_GPIO_WritePin(GPIOB, 1, 0); //PB1赋值为低电平
HAL_GPIO_WritePin(GPIOB, 4, 0);//PB4赋值为低电平
HAL_GPIO_WritePin(GPIOB, 8, 0);//PB8赋值为低电平
HAL_GPIO_WritePin(GPIOB, 32, 0);//PB32赋值为低电平  STM32每组IO最多16个IO  并没有PB32
GPIO_InitStruct.Pin = 1; //GPIO_InitStruct结构体的pin成员赋值为1
HAL_GPIO_WritePin(GPIOB, 16, num[b%10][i]);////PB16赋值电平,电平状态由num[b%10][i]值决定,要么0要么1

点赞  2020-7-7 16:48

还有 LL库写法 LL_GPIO_WriteOutputPort 

还可以寄存器写法 对GPIO的BSRR寄存器进行赋值

比如 要赋值为高电平

GPIOB->BSRR = 1;

点赞  2020-7-7 16:51
引用: 宋元浩 发表于 2020-7-7 16:48 HAL_GPIO_WritePin(GPIOB, 1, 0); //PB1赋值为低电平 HAL_GPIO_WritePin(GPIOB, 4, 0);//PB4赋值为低电平 ...

总感觉你的回答怪怪的,那样写的代码keil5软件没有报错啊,都知道没有PB32,如你回答所述keil5应该会报错的

点赞  2020-7-7 17:19
引用: 记忆的永恒 发表于 2020-7-7 17:19 总感觉你的回答怪怪的,那样写的代码keil5软件没有报错啊,都知道没有PB32,如你回答所述keil5应该会报错 ...

编译肯定不会报错啊,但是HAL接口里面都会有断言,assert_param  使能下USE_FULL_ASSERT,运行下你就知道错在哪了

点赞  2020-7-7 17:29

HAL_GPIO_WritePin(GPIOB, 1, 0); //B口每1位写零
HAL_GPIO_WritePin(GPIOB, 4, 0);
HAL_GPIO_WritePin(GPIOB, 8, 0);
HAL_GPIO_WritePin(GPIOB, 32, 0);
GPIO_InitStruct.Pin = 1;//初始化管脚为第1脚
HAL_GPIO_WritePin(GPIOB, 16, num[b%10][i]); //向B口每16个比特写num中的数值

http://shop34182318.taobao.com/ https://shop436095304.taobao.com/?spm=a230r.7195193.1997079397.37.69fe60dfT705yr
点赞  2020-7-7 21:42

错误分为编译期错误和运行期错误。

默认摸鱼,再摸鱼。2022、9、28
点赞  2020-7-8 19:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复