欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32定時器的幾種用法

CHANBAEK ? 來源:博客園-lzh666 ? 作者:博客園-lzh666 ? 2023-02-15 14:06 ? 次閱讀

stm32定時器的幾種用法

一、常用的定時功能

(1)基本、通用、高級定時器都有最基本的定時功能,定時功能用到的函數(shù)如下:

HAL_TIM_Base_Init 初始化定時,包括分頻、 預(yù)裝值等。

HAL_TIM_ConfigClockSource 選擇定時器的時鐘

HAL_TIM_Base_Start_IT 開始定時器

HAL_TIM_PeriodElapsedCallback 超時后的回調(diào)函數(shù)

(2)Cubemx的配置,不管什么定時器,都是這個配置,注意開啟中斷,計算好最終的定時器時鐘

(3)代碼片段

1 void MX_TIM12_Init(void)
 2 {
 3   TIM_ClockConfigTypeDef sClockSourceConfig = {0};
 4 
 5   htim12.Instance = TIM12;
 6   htim12.Init.Prescaler = 199;
 7   htim12.Init.CounterMode = TIM_COUNTERMODE_UP;
 8   htim12.Init.Period = 999;
 9   htim12.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
10   htim12.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
11   if (HAL_TIM_Base_Init(&htim12) != HAL_OK)
12   {
13     Error_Handler();
14   }
15   sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
16   if (HAL_TIM_ConfigClockSource(&htim12, &sClockSourceConfig) != HAL_OK)
17   {
18     Error_Handler();
19   }
20
21 }
22 
23 int main(void)
24 {
33   HAL_Init();
34 
35   /* USER CODE BEGIN Init */
36 
37   /* USER CODE END Init */
38 
39   /* Configure the system clock */
40   SystemClock_Config();
47   MX_GPIO_Init();
48   MX_TIM12_Init();
49   /* USER CODE BEGIN 2 */
50     HAL_TIM_Base_Start_IT(&htim12);
51   /* USER CODE END 2 */
52 
53   /* Infinite loop */
54   /* USER CODE BEGIN WHILE */
55   while (1)
56   {
57     /* USER CODE END WHILE */
58         HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_13);
59         HAL_Delay(1000);
60     /* USER CODE BEGIN 3 */
61   }
62   /* USER CODE END 3 */
63 }
64 
65 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
66 {
67         if(htim->Instance == TIM12)
68         {
69                 static uint16_t cnt = 0;    
70                 if(++cnt >= 1000)
71                 {
72                         cnt = 0;
73                         HAL_GPIO_TogglePin(GPIOH,GPIO_PIN_9);
74                 }
75         }
76         
77 }

二、使用通用定時器或者高級定時器來生產(chǎn)PWM波形

(1)使用通用定時器生成1路PWM

a.使用到的定時器API

HAL_TIM_PWM_Init

HAL_TIM_PWM_ConfigChannel

HAL_TIM_PWM_Start

__HAL_TIM_SET_COMPARE

b.Cubemx的配置

選擇內(nèi)部始終,Channel 1 為PWM生成。

根據(jù)配置信息,可知:

定義定時器預(yù)分頻,定時器實際時鐘頻率為:200MHz/(GENERAL_TIMx_PRESCALER+1)

實際時鐘頻率為:20MHz

定義定時器周期,當(dāng)定時器開始計數(shù)到GENERAL_TIMx_PERIOD值是更新定時器并生成對應(yīng)事件和中斷

定時器產(chǎn)生中斷頻率為:20MHz/(999+1)=20KHz,即50us定時周期

GENERAL_TIM_CH1_PULSE/GENERAL_TIM_PERIOD*100%

所以,以上配置生成的PWM的頻率為20KHz,占空比為50%。

c. 代碼實現(xiàn)

int main(void)
{
  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_TIM2_Init();

    HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);

  while (1)
  {
  }
}

void MX_TIM2_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 9;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 999;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK)
  {
    Error_Handler();
  }
  if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 500;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    Error_Handler();
  }
  HAL_TIM_MspPostInit(&htim2);

}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10925

    瀏覽量

    357732
  • 定時
    +關(guān)注

    關(guān)注

    1

    文章

    122

    瀏覽量

    25518
  • 定時器
    +關(guān)注

    關(guān)注

    23

    文章

    3256

    瀏覽量

    115423
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4830

    瀏覽量

    69110
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    87

    瀏覽量

    11626
收藏 人收藏

    評論

    相關(guān)推薦

    STM32有哪幾種定時器 STM32高級定時器有哪些功能

    SysTick定時器的功能比較單一,主要是供給系統(tǒng)使用的,系統(tǒng)默認(rèn)設(shè)置為1ms觸發(fā)一次中斷。而用戶想要使用自己的定時器STM32提供的用戶定時器不但數(shù)量多且功能更加強大。
    的頭像 發(fā)表于 07-27 16:25 ?5213次閱讀
    <b class='flag-5'>STM32</b>有哪<b class='flag-5'>幾種</b><b class='flag-5'>定時器</b> <b class='flag-5'>STM32</b>高級<b class='flag-5'>定時器</b>有哪些功能

    單片機定時器用法

    本章以CW32通用定時器為例介紹單片機定時器用法。
    的頭像 發(fā)表于 01-04 10:37 ?1520次閱讀
    單片機<b class='flag-5'>定時器</b>的<b class='flag-5'>用法</b>

    定時器有如下幾種功能用法

    實現(xiàn)簡述:定時器有如下幾種功能用法:1>定時。使用內(nèi)部時鐘源2>PWM調(diào)制輸出。使用內(nèi)部時鐘源3>脈沖寬度(頻率)測量。使用內(nèi)部時鐘源,外部邊沿觸發(fā)4>脈沖數(shù)計數(shù)。使用外部
    發(fā)表于 08-18 06:29

    STM32中的定時器有很多用法

    STM32 定時器(一)——定時器時間的計算STM32定時器是灰常NB的,也是灰常讓人頭暈的(當(dāng)然是對于白菜來說的)。
    發(fā)表于 08-18 06:22

    stm32定時器中斷程序

    STM32定時器是個強大的模塊,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做PWM輸出或者輸入捕獲功能。 以下是進行
    發(fā)表于 10-12 16:59 ?1.3w次閱讀

    [STM32]通用定時器的使用

    STM32的通用定時器定時、輸出PWM功能的使用本次還是使用發(fā)光二極管來驗證定時器的使用目錄STM32的通用
    發(fā)表于 11-22 19:06 ?24次下載
    [<b class='flag-5'>STM32</b>]通用<b class='flag-5'>定時器</b>的使用

    STM32定時器-基本定時器

    目錄定時器分類基本定時器功能框圖講解基本定時器功能時鐘源計數(shù)時鐘計數(shù)自動重裝載寄存
    發(fā)表于 11-23 18:21 ?31次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>-基本<b class='flag-5'>定時器</b>

    定時器用法以及pwm的調(diào)速

    今天我們來講一下定時器用法以及PWM的調(diào)速我們最初接觸的51單片機有兩組定時器(計數(shù)),因為既可以定時,又可以計數(shù),因此叫做
    發(fā)表于 11-24 21:06 ?5次下載
    <b class='flag-5'>定時器</b>的<b class='flag-5'>用法</b>以及pwm的調(diào)速

    STM32——高級定時器、通用定時器、基本定時器的區(qū)別

    STM32——高級定時器、通用定時器、基本定時器的區(qū)別
    發(fā)表于 11-26 15:21 ?110次下載
    <b class='flag-5'>STM32</b>——高級<b class='flag-5'>定時器</b>、通用<b class='flag-5'>定時器</b>、基本<b class='flag-5'>定時器</b>的區(qū)別

    STM32-通用定時器-定時器中斷

    1STM32定時器STM32F103ZET6一共有8個定時器,其中分別為:高級定時器(TIM1、TIM8);通用
    發(fā)表于 11-26 15:36 ?16次下載
    <b class='flag-5'>STM32</b>-通用<b class='flag-5'>定時器</b>-<b class='flag-5'>定時器</b>中斷

    STM32---定時器知多少

    STM32定時器知多少這里寫目錄標(biāo)題STM32---定時器知多少定時器的分類定時器的工作原理
    發(fā)表于 11-30 14:36 ?19次下載
    <b class='flag-5'>STM32</b>---<b class='flag-5'>定時器</b>知多少

    STM32定時器學(xué)習(xí)---基本定時器

    STM32F1系列的產(chǎn)品,除了互聯(lián)網(wǎng)產(chǎn)品外,工作8個,3種定時器,其中一種就是基本定時器。那么STM32單片機的基本定時器如何操作以及編程呢
    發(fā)表于 12-02 14:06 ?28次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>學(xué)習(xí)---基本<b class='flag-5'>定時器</b>

    STM32定時器功能和用法詳解

    1. STM32的Timer簡介 STM32中一共有11個定時器,其中2個高級控制定時器,4個普通定時器和2個基本
    發(fā)表于 02-11 15:04 ?29次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>功能和<b class='flag-5'>用法</b>詳解

    STM32定時器幾種輸出模式

    最近有接觸到通過可控硅的方式來控制交流風(fēng)機或者電烙鐵功率,STM32定時器輸出比較模式,剛好可以滿足這種需求,借此機會總結(jié)一下定時器幾種輸出模式。
    的頭像 發(fā)表于 01-12 16:49 ?5931次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>的<b class='flag-5'>幾種</b>輸出模式

    STM32定時器的分類及中斷原理

    本文主要介紹常規(guī)定時器中的TIM3,實現(xiàn)定時器中斷的功能。STM32定時器的分類在其中一篇文章中已經(jīng)介紹過,本文主要內(nèi)容主要介紹定時器的基礎(chǔ)
    的頭像 發(fā)表于 01-12 17:29 ?7535次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>的分類及中斷原理