熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

"); //-->

博客專欄

EEPW首頁 > 博客 > STM32 產(chǎn)生us延遲的方法

STM32 產(chǎn)生us延遲的方法

發(fā)布人:southcreek 時間:2020-08-11 來源:工程師 發(fā)布文章

使用一個空閑不用的定時器,做如下設(shè)置,預(yù)分頻設(shè)為0, 周期設(shè)置為 55520-1

/* TIM7 init function */

static void MX_TIM7_Init(void)

{
  TIM_MasterConfigTypeDef sMasterConfig;
  htim7.Instance = TIM7;
  htim7.Init.Prescaler = 0;
  htim7.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim7.Init.Period = 65519;
  htim7.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim7) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim7, &sMasterConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }
}
另外編寫一個 delay_us的函數(shù)
/* 最大us數(shù)為 1356us */
inline void Delay_us(uint16_t us){
  TIM7->CNT = 0;
  HAL_TIM_Base_Start(&htim7);
  while(TIM7->CNT < ((uint16_t)48 * us - 1));
}
調(diào)用時,將定時計數(shù)器清零,然后啟動定時器,等待計數(shù)器達(dá)到設(shè)定的值后返回。
這里的時鐘頻率 PCLK為48M,計數(shù)器設(shè)定值為 48*us數(shù)。使用時注意這個數(shù)不要超過在period中的設(shè)定值。 程序運(yùn)行時如果被中斷,會損失精度。調(diào)用函數(shù),函數(shù)返回也需要時間。如果需要高精度延遲時,需要將這些問題考慮進(jìn)去。


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉