STM32F103C8T6,HAL固件库精确延时1us

STM32F103C8T6,HAL固件库精确延时1us

由于HAL库的延时函数只有HAL_Delay();
导致想延时1us的函数十分复杂,如果更改sys,可能导致系统的瘫痪,所以这里提供一种简便的算法,就是一个简单的for循环

void Delay_1us(void) 
{
    unsigned char a;
    for(a=2;a>0;a--);
}

以上语句就是延时精确延时us的函数,这是经过我实际测试的,我采用拉低拉高PA4引脚电平的方法,在主函数里面的while测试代码

while (1)
  {
    /* USER CODE END WHILE */
    /* USER CODE BEGIN 3 */
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);
      Delay_1us();
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);
      Delay_1us();
  }

示波器测试如图:
STM32F103C8T6,HAL固件库精确延时1us_第1张图片
注意:

  void Delay_1us(void) 
  1. 这个函数就是仅仅延时1us的函数,不可以乱将里面的数字更改,否则导师延时不准确。
  2. 此函数仅仅针对STM32F103C8T6,对于其他的型号,晶振不一样,延时结果就可能不一样。
  3. 如果有其他问题,联系V:13120333066。

你可能感兴趣的:(stm32,hal)