在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32定時器的幾種用法

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

stm32定時器的幾種用法

一、常用的定時功能

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

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

HAL_TIM_ConfigClockSource 選擇定時器的時鐘

HAL_TIM_Base_Start_IT 開始定時器

HAL_TIM_PeriodElapsedCallback 超時后的回調函數

(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 }

二、使用通用定時器或者高級定時器來生產PWM波形

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

a.使用到的定時器API

HAL_TIM_PWM_Init

HAL_TIM_PWM_ConfigChannel

HAL_TIM_PWM_Start

__HAL_TIM_SET_COMPARE

b.Cubemx的配置

選擇內部始終,Channel 1 為PWM生成。

根據配置信息,可知:

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

實際時鐘頻率為:20MHz

定義定時器周期,當定時器開始計數到GENERAL_TIMx_PERIOD值是更新定時器并生成對應事件和中斷

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

GENERAL_TIM_CH1_PULSE/GENERAL_TIM_PERIOD*100%

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

c. 代碼實現

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);

}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356742
  • 定時
    +關注

    關注

    1

    文章

    122

    瀏覽量

    25457
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115069
  • 代碼
    +關注

    關注

    30

    文章

    4808

    瀏覽量

    68808
  • 回調函數
    +關注

    關注

    0

    文章

    87

    瀏覽量

    11598
收藏 人收藏

    評論

    相關推薦

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

    SysTick定時器的功能比較單一,主要是供給系統使用的,系統默認設置為1ms觸發一次中斷。而用戶想要使用自己的定時器STM32提供的用戶定時器不但數量多且功能更加強大。
    的頭像 發表于 07-27 16:25 ?5142次閱讀
    <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通用定時器為例介紹單片機定時器用法
    的頭像 發表于 01-04 10:37 ?1459次閱讀
    單片機<b class='flag-5'>定時器</b>的<b class='flag-5'>用法</b>

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

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

    STM32中的定時器有很多用法

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

    stm32定時器中斷程序

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

    [STM32]通用定時器的使用

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

    STM32定時器-基本定時器

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

    定時器用法以及pwm的調速

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

    STM32——高級定時器、通用定時器、基本定時器的區別

    STM32——高級定時器、通用定時器、基本定時器的區別
    發表于 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>的區別

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

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

    STM32---定時器知多少

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

    STM32定時器學習---基本定時器

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

    STM32定時器功能和用法詳解

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

    STM32定時器幾種輸出模式

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

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

    本文主要介紹常規定時器中的TIM3,實現定時器中斷的功能。STM32定時器的分類在其中一篇文章中已經介紹過,本文主要內容主要介紹定時器的基礎
    的頭像 發表于 01-12 17:29 ?7424次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>定時器</b>的分類及中斷原理
    主站蜘蛛池模板: 一级 黄 色 片免费 一级@片 | 日韩免费三级 | 一级做a爱片在线播放 | 天天曰| 岬奈奈美在线 国产一区 | 国产女主播在线播放一区二区 | 操美女免费视频 | 日本不卡专区 | 国产精品久久久久久吹潮 | 又粗又长又大真舒服好爽漫画 | 久久亚洲国产午夜精品理论片 | 中文字幕在线播放第一页 | 亚洲伊人网站 | 日本久久久 | 免费在线成人 | 波多野结衣在线观看一区二区 | 日日做夜夜爽夜夜爽 | 国产在视频线精品视频2021 | 久草狼人 | 日本在线播放一区 | 亚洲天堂视频一区 | 2021国内精品久久久久影院 | 深夜偷偷看视频在线观看 | 色婷婷成人网 | 日日躁夜夜躁狠狠天天 | 在线观看三级视频 | 久操视频网 | 国产成人啪精品午夜在线播放 | 激情婷婷丁香 | 免费国产高清精品一区在线 | 五月天福利视频 | 在线三级播放 | 性爽爽 | 黄色18网站| 欧美成人黄色 | 人人九九精品 | 国产乱码一区二区三区四川人 | 欧美区一区 | 色内内免费视频播放 | 特黄特级毛片免费视 | 亚洲一区免费在线观看 |