国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

keysking 【stm32】hal庫學(xué)習(xí)筆記--定時器(超詳細(xì)?。?/h1>

這篇具有很好參考價值的文章主要介紹了keysking 【stm32】hal庫學(xué)習(xí)筆記--定時器(超詳細(xì)?。?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

stm32hal庫–定時器

任務(wù)一:串口發(fā)送計數(shù)器的值

一.Cube MX配置

1.打開串口2及其中斷,用于發(fā)送數(shù)據(jù)stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
2.將高速外部時鐘源設(shè)置為晶振,提高定時精度
stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

3.將HCLK改為72MHz
stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
4.開啟定時器
TIM4–勾選 Internal Clock(內(nèi)部時鐘)/
TIM2–將Clock Source選擇為Internal Clock
5.設(shè)置預(yù)分頻器
Prescaler–n(想要實現(xiàn)的分頻)-1
Counter Period(自動重裝載寄存器)m-1
[即每數(shù)到m次計數(shù)器清零)
stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

二.代碼部分

  • 定時器啟動函數(shù) HAL_TIM_Base_Start
    (接收tim4句柄的指針)
    1.啟動定時器
    Base定時器基本用法 調(diào)用此函數(shù)后TIM4開始計時工作
    2.打印計數(shù)器的計數(shù)值
    定義counter存儲計數(shù)器的值
    定義char數(shù)組message用以拼接字符串

  • 宏定義-獲取計數(shù)器值函數(shù)__HAL_TIM_GET_COUNTER(參數(shù)為htim4的指針)
    tips:hal庫中宏定義函數(shù)比較偏底層,傾向于直接對寄存器進(jìn)行操作
    3.循環(huán)中
    (1) 使用counter變量接受獲取到的計數(shù)器值
    (2) 使用sprintf進(jìn)行字符串拼接
    (用于儲存字符串的message變量,
    (3) 想用串口發(fā)出的字符串"counter:%d",counter);

  • 串口中斷發(fā)送函數(shù) HAL_UART_Transmit_IT
    (用來發(fā)送的串口的指針,要發(fā)送數(shù)據(jù)的指針,發(fā)送數(shù)據(jù)的長度)
    (4) 防止發(fā)送過快 HAL_Delay
    tips:HAL_Delay函數(shù)精確延時 每次延時都比填入數(shù)字多1ms
    (5)sprintf–頭文件stdio
    strlen–頭文件string
    stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */
...
 /* USER CODE BEGIN 2 */
HAL_TIM_Base_Start(&htim4);
int counter=0;
char message[20];
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	  counter=__HAL_TIM_GET_COUNTER(&htim4);
	  sprintf(message,"counter: %d",counter);
	  HAL_UART_Transmit_IT(&huart2,(uint8_t*)message,strlen(message));
	  HAL_Delay(99);
    /* USER CODE END WHILE */

三.實現(xiàn)效果

tips:開始時按KRST鍵(reset復(fù)位按鈕)
從0開始計數(shù) 每100毫秒數(shù)1000個數(shù)
到10000個數(shù)(即9999)時計數(shù)器清零

函數(shù)補(bǔ)充

  • __HAL_TIM_GET_COUNTER 獲取計數(shù)器的值
  • HAL_TIM_SET_COUNTER 用于設(shè)置計數(shù)器的值
  • HAL_TIM_GET_AUTORELOAD 獲取重裝載寄存器的值
  • HAL_TIM_SET_AUTIRELOAD 設(shè)置重裝載寄存器的值
  • HAL_TIM_SET_PRESCALER 設(shè)置預(yù)分頻器的值

任務(wù)二:定時

一.Cube MX配置

stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

二.代碼部分

1.啟動定時器(+_IT 使其清零時觸發(fā)更新中斷)
stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記

  • HAL_TIM_Base_Start_IT
    2.重寫中斷回調(diào)函數(shù)
    1.找到中斷回調(diào)函數(shù)stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
  • HAL_TIM_PeriodElapsedCallback 中斷回調(diào)函數(shù)
    stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
/* USER CODE BEGIN 0 */
char data[]="????????";
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){
	if(htim==&htim4){
		HAL_UART_Transmit_IT(&huart2,(uint8_t*)data,strlen(data));
	}
}
/* USER CODE END 0 */

tips:Transmi_IT是非阻塞發(fā)送,若中斷中的Transmi_IT和while循環(huán)中的Transmit_IT發(fā)送間隔太小,會導(dǎo)致上次的數(shù)據(jù)沒發(fā)完就被下次發(fā)送的數(shù)據(jù)覆蓋
所以這里要注釋掉while循環(huán)中的發(fā)送

三.實現(xiàn)效果

stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
每隔1ms發(fā)送數(shù)據(jù)

補(bǔ)充

  • 預(yù)分頻器和重裝載寄存器都存在影子寄存器,重裝載寄存器的影子寄存器可手動調(diào)整是否開啟

stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記
開啟重裝載寄存器的影子寄存器,使新設(shè)置的清零值等到下個周期生效,防止更改數(shù)值后錯過
Core:定時器就是計數(shù)器
原理部分后續(xù)補(bǔ)充…
stm32 hal 定時器單次,stm32學(xué)習(xí)筆記,stm32,學(xué)習(xí),筆記文章來源地址http://www.zghlxwxcb.cn/news/detail-788565.html

到了這里,關(guān)于keysking 【stm32】hal庫學(xué)習(xí)筆記--定時器(超詳細(xì)!)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32 HAL庫 Timer(定時器)+DMA輸出PWM底層配置過程學(xué)習(xí)

    STM32 HAL庫 Timer(定時器)+DMA輸出PWM底層配置過程學(xué)習(xí)

    本文使用的芯片型號是STM32G030,寫本文的目前是想記錄學(xué)習(xí)下Timer借助DMA生成可變占空比PWM時的底層配置過程。 使用TIM1,配置就只改了圖上的配置,系統(tǒng)時鐘用的16M,分頻選擇15(16-1),自動重裝載寄存器ARR選擇999(1000-1),那么生成的就是1kHz的PWM,這里為什么要減1,因為這倆是

    2024年04月09日
    瀏覽(55)
  • STM32 HAL庫 CubeMX配置 定時器學(xué)習(xí) F103C8T6

    STM32 HAL庫 CubeMX配置 定時器學(xué)習(xí) F103C8T6

    開發(fā)板: STM32F103C8T6最小系統(tǒng)板 編譯環(huán)境: Keil5 MDK 輔助軟件: STM32 CubeMX 課程教學(xué): 基于正點原子HAL庫學(xué)習(xí)教程 其余配件: 江科大STM32配件包?和 示波器一臺 備注: ?因為這塊開發(fā)板沒有基本定時器,所以本文也 沒有基本定時器的內(nèi)容 ????????????本文1.3和2.1部分的

    2024年04月26日
    瀏覽(21)
  • 【STM32】學(xué)習(xí)筆記(TIM定時器)

    【STM32】學(xué)習(xí)筆記(TIM定時器)

    定時器可以對輸入的時鐘進(jìn)行計數(shù),并在計數(shù)值達(dá)到設(shè)定值時觸發(fā)中斷 16位計數(shù)器、預(yù)分頻器、自動重裝寄存器的時基單元,在72MHz計數(shù)時鐘下可以實現(xiàn)最大59.65s的定時 不僅具備基本的定時中斷功能,而且還包含內(nèi)外時鐘源選擇、輸入捕獲、輸出比較、編碼器接口、主從觸發(fā)

    2024年02月09日
    瀏覽(26)
  • 基于STM32的定時器--定時中斷(HAL庫)

    基于STM32的定時器--定時中斷(HAL庫)

    本文旨在介紹如何使用STM32CubeMX配置+KEIL 5開發(fā)一個每10us定時器中斷觸發(fā)一次的項目。幫助初學(xué)者入門STM32的定時器使用。 定時器是STM32微控制器中非常重要的功能模塊之一,用于計時、生成精確的時間延遲、觸發(fā)事件等。STM32微控制器通常具有多個定時器模塊,包括通用定時

    2024年02月14日
    瀏覽(23)
  • stm32學(xué)習(xí)筆記-6TIM定時器

    stm32學(xué)習(xí)筆記-6TIM定時器

    注:筆記主要參考B站 江科大自化協(xié) 教學(xué)視頻“STM32入門教程-2023持續(xù)更新中”。 注:工程及代碼文件放在了本人的Github倉庫。 定時器是STM32中功能最強(qiáng)大、結(jié)構(gòu)最復(fù)雜的一個外設(shè)。定時器將包括四部分8小節(jié): 第一部分主要講定時器基本定時的功能,也就是指定一個時間,讓

    2024年02月15日
    瀏覽(29)
  • STM32 HAL庫-定時器中斷

    STM32 HAL庫-定時器中斷

    關(guān)閉或開啟所有中斷;代碼如下: STM32F407 有眾多的定時器,其中包括 2 個基本定時器(TIM6 和 TIM7)、10 個通用定時 器(TIM2 ~ TIM5、TIM9 ~TIM14)、2 個高級控制定時器(TIM1 和 TIM8),這些定時器彼此完 全獨立,不共享任何資源。 選擇定時器,配置時鐘源,設(shè)置預(yù)分頻系數(shù),計

    2024年01月25日
    瀏覽(23)
  • 正點原子--STM32基本定時器學(xué)習(xí)筆記(1)

    正點原子--STM32基本定時器學(xué)習(xí)筆記(1)

    目錄 1. 定時器概述 1.1 軟件定時原理 1.2 定時器定時原理 1.3 定時器分類 1.4 定時器特性表 1.5 基本、通用、高級定時器的功能整體區(qū)別 2. 基本定時器簡介 3. 基本定時器框圖 時鐘樹分析 這部分是筆者對基本定時器的理論知識進(jìn)行學(xué)習(xí)與總結(jié)!主要記錄學(xué)習(xí)過程中遇到的重難點

    2024年02月19日
    瀏覽(22)
  • 【STM32】學(xué)習(xí)筆記(TIM定時器)-江科大

    【STM32】學(xué)習(xí)筆記(TIM定時器)-江科大

    定時器可以對輸入的時鐘進(jìn)行計數(shù),并在計數(shù)值達(dá)到設(shè)定值時觸發(fā)中斷 16位計數(shù)器、預(yù)分頻器、自動重裝寄存器的時基單元,在72MHz計數(shù)時鐘下可以實現(xiàn)最大59.65s的定時 不僅具備基本的定時中斷功能,而且還包含內(nèi)外時鐘源選擇、輸入捕獲、輸出比較、編碼器接口、主從觸發(fā)

    2024年02月10日
    瀏覽(26)
  • (四) timer+pit(定時器中斷)+encoder(編碼器)-逐飛TC264庫學(xué)習(xí)(對比STM32 HAL庫)

    (四) timer+pit(定時器中斷)+encoder(編碼器)-逐飛TC264庫學(xué)習(xí)(對比STM32 HAL庫)

    PIT , 是programmable interval timer?可編程間隔定時器 DSC中的器件 的縮寫,所以就是定時器中斷,有點像32里的timer(TIMx) 目前看來一共能用通道的有四個 typedef enum // 枚舉通道號 { ? ? CCU60_CH0, ? ? CCU60_CH1, ? ? CCU61_CH0, ? ? CCU61_CH1, }pit_index_enum; 因為涉及到中斷,為方便設(shè)定中斷優(yōu)

    2024年03月15日
    瀏覽(40)
  • # HAL庫STM32常用外設(shè)教程(四)—— 定時器 基本定時

    # HAL庫STM32常用外設(shè)教程(四)—— 定時器 基本定時

    1、STM32F407ZGT6 2、STM32CubeMx軟件 3、keil5 內(nèi)容簡述: 通篇文章將涉及以下內(nèi)容,如有錯誤,歡迎指出 : 1、基礎(chǔ)定時器特性 2、基礎(chǔ)定時器的結(jié)構(gòu)和功能 3、基礎(chǔ)定時器HAL庫驅(qū)動程序 (1)CubeMx配置 (2)TIM驅(qū)動程序 ??STM32F407有2個高級控制定時器(TIM1、TIM8)、8個通用定時器和

    2024年02月02日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包