STM32F103 UART按钮事件延迟慢

时间:2018-09-20 10:32:55

标签: stm32 uart hal

我正在使用CUBE MX和Keil v5在STM32F103C8T6上使用UART1测试非常基本的传输。

我已经在支持UART的CUBE MX中准备了项目,并去了Keil。

说实话,一切正常,如果我按板上的按钮(PA0),传输的字符串从stringa1正确更改为stringa2,但是即使我非常快地按下并释放按钮,它也会在stringa2上保留3或4个周期

简而言之,这似乎是同步或时序问题,即使释放了按钮,HAL仍会发送stringa2,就像我仍然手指按PA0一样。

可能是什么问题?

int main(void)
{
  /* USER CODE BEGIN 1 */
    char *stringa1 = "ciao\r\n";
    char *stringa2 = "pressed\r\n";

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
      /*
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
        HAL_Delay(500);
        HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
        HAL_Delay(500);
      */

        if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0)){
            HAL_UART_Transmit(&huart1, (uint8_t*) stringa1, strlen(stringa1), 10);
        } else {
            HAL_UART_Transmit(&huart1, (uint8_t*) stringa2, strlen(stringa2), 10);          
        }

        HAL_Delay(500);

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

0 个答案:

没有答案