Исходные данные проц: STM32L053R8
работаю с HAL
мне надо ногу PA9 сначала подергать вручную, а потом чтоб она была уартом.
я решил делать так:
конфигурирую как ногу на выход:
/*Configure GPIO pins : PA9 */
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
дергаю ногой:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (582);// это будет 582 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (158);// это будет 158 задержка
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_RESET);
HAL_Delay (24); // это будет 24 задержка очень чувствительно. ставлю 25 перестает работать.
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_9,GPIO_PIN_SET);
HAL_Delay (24);// это будет 24 задержка
конфигурирую как уарт:
// ниже конфигурирую пин PA9 опять как уарт
GPIO_InitStruct.Pin = GPIO_PIN_9;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Alternate = GPIO_AF4_USART1;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
отправляю:
HAL_UART_Transmit(&huart1, &start_posilka_abs, 1, 30); //отправляю 1 байт
принимаю:
HAL_UART_Receive_IT(&huart1, (uint8_t*)buffers_first, 1);//запускает прием по уарту как токо придут все байты будут приняты сработает прерывание каллбэк
вообщем вроде все работает кроме одного, перестает работать прием ) перестают работать прерывания на прием.