|
以前不怎么看库函数,所有特地学习学习,涨涨见识。
由于是同组的所有引脚循环检测一遍,不推荐下面这种初始化:
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- GPIO_InitStruct.Pin = GPIO_PIN_0;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //这里会执行16次for查询
- GPIO_InitStruct.Pin = GPIO_PIN_1;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //这里会执行16次for查询
-
- GPIO_InitStruct.Pin = GPIO_PIN_2;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //这里会执行16次for查询
复制代码
所以采用下面的方式合理些,其实也什么,就是初始化的时候稍稍占用点时间。如果是程序运行期间的引脚状态切换,最好采用下面的方式。- GPIO_InitStruct.Pin = GPIO_PIN_0 |GPIO_PIN_1 | GPIO_PIN_2 ;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); //这里会执行16次for查询
复制代码

|
|