Синтаксис, конечно, легче. Но что внутри?!
Пытаемся усвоить разницу:
Инициализируем линии на порту B - push-pull без подтяжек, низкоскоростные.
__GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
Устанавливаем в ноль отдельные линии порта:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_RESET);
Это, конечно, понятнее, чем GPIOB->BSRR = (uint32_t)(GPIO_PIN_2|GPIO_PIN_3) << 16;
Устанавливаем в ноль отдельные линии порта:
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_2|GPIO_PIN_3, GPIO_PIN_RESET);
Это, конечно, понятнее, чем GPIOB->BSRR = (uint32_t)(GPIO_PIN_2|GPIO_PIN_3) << 16;
но это функция
void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)
{
/* Check the parameters */
assert_param(IS_GPIO_PIN(GPIO_Pin));
assert_param(IS_GPIO_PIN_ACTION(PinState));
if(PinState != GPIO_PIN_RESET)
{
GPIOx->BSRR = GPIO_Pin;
}
else
{
GPIOx->BSRR = (uint32_t)GPIO_Pin << 16;
}
}
Так что, как только проверили... стоит заменить. Размер кода-- && Быстродействие++.
Так что, как только проверили... стоит заменить. Размер кода-- && Быстродействие++.