码迷,mamicode.com
首页 > 其他好文 > 详细

stm32 cubemx hal 工程中 微秒延迟 delay_us

时间:2016-08-04 13:26:13      阅读:1167      评论:0      收藏:0      [点我收藏+]

标签:

参考的正点原子的代码

 

测试平台

stm32f429i-disco

配了一个gpio

技术分享

时钟

技术分享

gpio

技术分享

 


/*
USER CODE BEGIN 0 */ typedef uint8_t u8; typedef uint32_t u32; u8 fac_us; void delay_init(u8 SYSCLK) { #if SYSTEM_SUPPORT_OS //?????? OS. u32 reload; #endif HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); //SysTick ??? HCLK fac_us=SYSCLK; //?????? OS,fac_us ????? #if SYSTEM_SUPPORT_OS //?????? OS. reload=SYSCLK; //???????? ??? K reload*=1000000/delay_ostickspersec; //?? delay_ostickspersec ?????? //reload ? 24 ????,???:16777216,? 180M ?,?? 0.745s ?? fac_ms=1000/delay_ostickspersec; //?? OS ????????? SysTick->CTRL|=SysTick_CTRL_TICKINT_Msk;//?? SYSTICK ?? SysTick->LOAD=reload; //? 1/OS_TICKS_PER_SEC ????? SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; //?? SYSTICK #else #endif } void delay_us(u32 nus) { u32 ticks; u32 told,tnow,tcnt=0; u32 reload=SysTick->LOAD; //LOAD ?? ticks=nus*fac_us; //?????? told=SysTick->VAL; //????????? while(1) { tnow=SysTick->VAL; if(tnow!=told) { if(tnow<told)tcnt+=told-tnow;//???? SYSTICK ??????????. else tcnt+=reload-tnow+told; told=tnow; if(tcnt>=ticks)break; //????/????????,???. } }; } /* USER CODE END 0 */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

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

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

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

  /* Initialize all configured peripherals */
  MX_GPIO_Init();

  /* USER CODE BEGIN 2 */
    delay_init(168);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_SET);
    delay_us(50);
    HAL_GPIO_WritePin(GPIOF, GPIO_PIN_7, GPIO_PIN_RESET);
    delay_us(50);
  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

 

 

 

实际测试, 函数调用能带来几百ns的误差. 

 

stm32 cubemx hal 工程中 微秒延迟 delay_us

标签:

原文地址:http://www.cnblogs.com/zhaitao85/p/5736049.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!