在线观看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>的分類及中斷原理
    主站蜘蛛池模板: 欧美一区二区三区视频| 亚洲先锋资源| 久久综合97色综合网| 天堂-bt种子| 国产精品推荐天天看天天爽| 婷婷综合网站| 丁香花在线电影小说观看| 美女三级网站| 日本 韩国 三级 国产 欧美| 色偷偷免费| 天堂视频在线视频观看2018| 色噜噜噜| 色福利网| 色多多免费观看在线| 免费澳门一级毛片| 快播久久| 丁香花在线视频| 涩涩涩综合在线亚洲第一| 天天色综合5| 午夜不卡在线| 黄网站色| 1000rt人体1000欧美| 丁香天堂网| 国产伦精品一区二区三区网站| 亚洲乱码尤物193yw在线播放| avt天堂网| 视频在线免费观看| 91福利网站| 色噜噜人体337p人体| 欧美成人h精品网站| 美女被异性狂揉下部羞羞视频 | 好色999| 精品视频一区二区三区四区五区| 久久久久99精品成人片三人毛片| 美女流白浆网站| 亚洲午夜视频| 视色在线视频| 国产自在自线午夜精品视频在| 国产免费的野战视频| 亚洲精品资源| 亚洲成在线观看|