HAL_Delay()函数 在freertos中 不会运行

因为在SysTick_Handler里面只有freertos时钟加一的osSystickHandler(),而没有hal时钟加一的 HAL_IncTick(),把后者加入就好了

代码如下 

void SysTick_Handler(void)
{
  /* USER CODE BEGIN SysTick_IRQn 0 */

  /* USER CODE END SysTick_IRQn 0 */
  HAL_IncTick();
  HAL_SYSTICK_IRQHandler();
  /* USER CODE BEGIN SysTick_IRQn 1 */
    HAL_IncTick(); //需要加入这个  HAL_Delay() 函数才能跑
  /* USER CODE END SysTick_IRQn 1 */
}

或者重新实现Hal_delay()

以为weak本身就可重写

方法很多: 

方法一:阻塞  不精准延时  运行NOP指令

方法二:通过一个定时器(TIM 到)

 

 

你可能感兴趣的:(STM32)