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

STM32開發(fā)(10)----CubeMX配置基本定時(shí)器

這篇具有很好參考價(jià)值的文章主要介紹了STM32開發(fā)(10)----CubeMX配置基本定時(shí)器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

本章介紹使用STM32CubeMX對(duì)基本定時(shí)器進(jìn)行配置的方法,STM32F103高性能系列設(shè)備包括基本定時(shí)器、高級(jí)控制定時(shí)器、通用定時(shí)器、看門狗定時(shí)器和 SysTick 定時(shí)器,但是STM32F103C6t6上資源比較有限(高級(jí)定時(shí)器TIM1,通用定時(shí)器TIM2和TIM3),沒有真正的基本定時(shí)器,其實(shí)通用定時(shí)器和高級(jí)定時(shí)的功能是包含基本定時(shí)器的,因此如果沒有使用到通用定時(shí)和高級(jí)定時(shí)的附加功能,也就是基本定時(shí)器了。本章介紹基本定時(shí)器,其他的定時(shí)器由后續(xù)章節(jié)一一介紹,最后通過示波器和打印結(jié)果來展現(xiàn)實(shí)現(xiàn)結(jié)果,如果有LED燈也可以,通過定時(shí)器來控制LED燈閃爍來觀察現(xiàn)象。

一、定時(shí)器的介紹

定時(shí)器就像單片機(jī)的鬧鐘一樣,定時(shí)器的核心就是計(jì)算器, 要實(shí)現(xiàn)計(jì)數(shù)功能,首先要給它一個(gè)時(shí)鐘源,定時(shí)器根據(jù)時(shí)鐘的輸出信號(hào),每隔“一秒"(一個(gè)單位時(shí)間),計(jì)數(shù)單元的數(shù)值就增加一,當(dāng)計(jì)數(shù)單元數(shù)值增加到“設(shè)定的鬧鐘提醒時(shí)間"時(shí),計(jì)數(shù)單元就會(huì)向中斷系統(tǒng)發(fā)出中斷申請(qǐng),產(chǎn)生"響鈴提醒",使程序跳轉(zhuǎn)到中斷服務(wù)函數(shù)中執(zhí)行。
下面是三種定時(shí)的比較:
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
我們這里給出基本定時(shí)器的框圖,基本定時(shí)器比較簡單,也是通用定時(shí)器和高級(jí)定時(shí)器的基礎(chǔ),分析基本定時(shí)器,可以很好的分解通用定時(shí)器和高級(jí)定時(shí)器。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
從上圖我們可以看到基本定時(shí)器主要由下面四個(gè)部分組成:
**時(shí)鐘源:**定時(shí)器時(shí)鐘 TIMxCLK,即內(nèi)部時(shí)鐘 CK_INT所以定時(shí)器時(shí)鐘,通過下圖可以看到不同定時(shí)器所在的總線,從而確定他們的時(shí)鐘源,STM32F103C6T6的高級(jí)定時(shí)器TIM1定時(shí)掛在APB2上,通用定時(shí)器TIM2。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
**預(yù)分頻器(TIMx_PSC):**定時(shí)器時(shí)鐘經(jīng)過 PSC 預(yù)分頻器之后,即計(jì)數(shù)器時(shí)鐘 CK_CNT,用來驅(qū)動(dòng)計(jì)數(shù)器計(jì)數(shù)。 PSC 是一
個(gè)16 位的預(yù)分頻器,可以對(duì)定時(shí)器時(shí)鐘 TIMxCLK 進(jìn)行 1~65536 之間的任何一個(gè)數(shù)進(jìn)行分頻。具體計(jì)算方式為: CK_CNT=TIMxCLK/(PSC+1)。

下圖為預(yù)分頻系數(shù)從1變到2的計(jì)數(shù)器時(shí)序圖:圖中CK_PSC是脈沖信號(hào),預(yù)分頻系數(shù)為2,所以最下面的預(yù)分頻計(jì)數(shù)器計(jì)數(shù)0,1,中間的計(jì)數(shù)器寄存器記一次數(shù)。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
**計(jì)數(shù)器(TIMx_CNT):**計(jì)數(shù)器 CNT 是一個(gè) 16 位的計(jì)數(shù)器,只能往上計(jì)數(shù),最大計(jì)數(shù)值為 65535。當(dāng)計(jì)數(shù)達(dá)到自動(dòng)重裝載寄存器的時(shí)候產(chǎn)生更新事件,并清零從頭開始計(jì)數(shù)。

**自動(dòng)重裝載寄存器(TIMx_ARR):**自動(dòng)重裝載寄存器 ARR 是一個(gè) 16 位的寄存器,這里面裝著計(jì)數(shù)器能計(jì)數(shù)的最大數(shù)
值。當(dāng)計(jì)數(shù)到這個(gè)值的時(shí)候,如果使能了中斷的話,定時(shí)器就產(chǎn)生溢出中斷。

下圖為分頻系數(shù)為1,自動(dòng)重裝載寄存器(TIMx_ARR)為36的計(jì)數(shù)器時(shí)序圖。當(dāng)計(jì)數(shù)器滿36則進(jìn)行重裝,同時(shí)觸發(fā)更新事件,更新中斷標(biāo)志等動(dòng)作。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
定時(shí)器有如下三種計(jì)數(shù)模式
**遞增計(jì)數(shù)模式:**計(jì)數(shù)器從 0 計(jì)數(shù)到自動(dòng)重載值,然后重新從 0 開始計(jì)數(shù)并生成計(jì)數(shù)器上溢事件。
**遞減計(jì)數(shù)模式:**計(jì)數(shù)器從自動(dòng)重載值開始遞減到 0,然后重新從自動(dòng)重載值開始計(jì)數(shù)并生成計(jì)數(shù)器下溢事件。
**中心對(duì)齊模式:**計(jì)數(shù)器從 0 開始計(jì)數(shù)到自動(dòng)重載值 – 1 ,生成計(jì)數(shù)器上溢事件;然后從自動(dòng)重載值開始向下計(jì)數(shù)到 1 并生成計(jì)數(shù)器下溢事件。之后從0 開始重新計(jì)數(shù)。

有了以上的基礎(chǔ)知識(shí),下面我們通過實(shí)驗(yàn)來驗(yàn)證一下

二、實(shí)驗(yàn)過程

1.實(shí)驗(yàn)材料

  • STM32F103C6T6最小系統(tǒng)開發(fā)板

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

  • ST-LINK V2

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

  • 杜邦線
  • 示波器

2.STM32CubeMX配置基本定時(shí)器

選擇芯片stm32f103c6t6,新建工程

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

設(shè)置時(shí)鐘源,最小系統(tǒng)外部晶振8Mhz,作為外部高速HSE時(shí)鐘源。由于沒有外接外部低速晶振,這里低速時(shí)鐘源選擇旁路時(shí)鐘源。

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

配置時(shí)鐘樹,這里使用官方推薦的配置

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

配置引腳功能,先配置一個(gè)GPIO,過會(huì)使用定時(shí)器控制其輸出高低電平,方便用示波器測(cè)試,我們使用通用定時(shí)器TIM2,已知TIM2掛在APB1上。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
內(nèi)部時(shí)鐘設(shè)置為不分頻(CKD),則CK_PSC的時(shí)鐘頻率等于APB1的時(shí)鐘頻率72MHz,即72000 000Hz。若要定時(shí)時(shí)間為1s,則即可設(shè)置7200分頻(預(yù)分頻器寄存器 (TIMx_PSC)的值為7200-1),定時(shí)器的時(shí)鐘CK_CNT的頻率為10000Hz.則自動(dòng)重載寄存器 (TIMx_ARR)設(shè)置為10000-1即定時(shí)為1s.TRGO為觸發(fā)輸出,可以觸發(fā)內(nèi)部ADC/DAC,這里我們沒有用到這個(gè)功能,參數(shù)為默認(rèn)設(shè)置。
T = (psc+1)(arr+1)/Tclk=(7200)(1000)/72us=1000ms = 1s

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
在NVIC Settings框勾選開啟定時(shí)器中斷。優(yōu)先級(jí)為默認(rèn)?;蛘咴贜VIC配置中使能TIM2中斷。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件
Code Generator中設(shè)置只拷貝使用到的庫,分離.c和.h文件

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

設(shè)置好項(xiàng)目名稱和路徑,點(diǎn)擊GENERATE CODE即可,生成后使用keil5 IDE打開。

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

2.代碼實(shí)現(xiàn)

在usart.c文件后面添加如下代碼,代碼中添加了#ifdef宏定義進(jìn)行條件編譯,如果使用GUNC編譯,則PUTCHAR_PROTOTYPE 定義為int __io_putchar(int ch)函數(shù),否則定義為int fputc(int ch, FILE *f)函數(shù)。

/* USER CODE BEGIN 0 */
#include "stdio.h"
#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
 
  return ch;
}
/* USER CODE END 0 */

實(shí)現(xiàn)一個(gè)LED等間隔1s閃爍一次的功能,代碼如下

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
			
    /* USER CODE BEGIN 3 */
		HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_0); //PA0
		printf("TIM2 \r\n");
		HAL_Delay(1000);
  }
  /* USER CODE END 3 */
}

3.編譯燒錄

代碼編譯成功

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

在下載前檢查keil是否檢測(cè)到ST-LINK,選擇魔法棒進(jìn)行設(shè)置

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

如圖所示,已經(jīng)檢測(cè)到ST-LINK 下載器

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

點(diǎn)擊load,自動(dòng)下載固件

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

4.硬件連接

燒錄器ST-LINK V2和最小系統(tǒng)板的連接如圖所示: 四線連接 SWDIO,GND,SWCLK,和3.3V電源

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

5.實(shí)驗(yàn)結(jié)果

使用串口打印和示波器兩種方式測(cè)試,打印可以看到周期輸出,示波器可以精準(zhǔn)的讀到輸出頻率和時(shí)間間隔。
stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

stm32cubemx 定時(shí)器,stm32基礎(chǔ)教程,stm32,單片機(jī),嵌入式硬件

總結(jié)

本章介紹了STM32F103系列設(shè)備中基本定時(shí)器的用法,其實(shí)前面交到的PWM也是定時(shí)器的典型應(yīng)用,接下來在介紹其他的定時(shí)用法。文章來源地址http://www.zghlxwxcb.cn/news/detail-575093.html

到了這里,關(guān)于STM32開發(fā)(10)----CubeMX配置基本定時(shí)器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • STM32使用CubeMx配置定時(shí)器輸出PWM

    STM32使用CubeMx配置定時(shí)器輸出PWM

    ????????項(xiàng)目中經(jīng)常使用到STM32來輸出PWM,每次配置過后過不了多久就會(huì)忘記,稍微需要對(duì)配置做出修改時(shí)都要翻很久的手冊(cè),所以決定結(jié)合實(shí)例把PWM配置的詳細(xì)步驟記錄下來,這樣在下次配置時(shí)可以很快的撿起來。 ????????本文檔的行文結(jié)構(gòu)如下,首先,說明實(shí)際需

    2024年02月03日
    瀏覽(27)
  • 搭建stm32電機(jī)控制代碼框架(二)——Stm32CubeMx配置定時(shí)器

    搭建stm32電機(jī)控制代碼框架(二)——Stm32CubeMx配置定時(shí)器

    搭建了基礎(chǔ)的環(huán)境,配置了一個(gè)簡單的工程后,CubeMx的基本操作就會(huì)了。然后基于這個(gè)操作往下推進(jìn),開始對(duì)關(guān)鍵模塊定時(shí)器的攻略,這個(gè)部分需要先熟悉一下Stm32的定時(shí)器基本原理。 《STM32參考手冊(cè)》中僅對(duì)定時(shí)器的介紹就已經(jīng)占了100多頁,這里就不一一展開,挑一些關(guān)鍵

    2024年02月06日
    瀏覽(21)
  • STM32高級(jí)定時(shí)器輸出指定數(shù)量PWM(STM32CubeMx配置)

    STM32高級(jí)定時(shí)器輸出指定數(shù)量PWM(STM32CubeMx配置)

    高級(jí)定時(shí)器中有一個(gè)重復(fù)計(jì)數(shù)器,本實(shí)驗(yàn)輸出指定個(gè)數(shù)PWM就是利用了重復(fù)計(jì)數(shù)器的特性,先來看看重復(fù)計(jì)數(shù)器的特性是什么: 計(jì)數(shù)器每次上溢或下溢都能使重復(fù)計(jì)數(shù)器減1,減到0時(shí),再發(fā)生一次溢出就會(huì)產(chǎn)生更新事件 這是什么意思呢,這里舉個(gè)例子比如說我設(shè)定重復(fù)計(jì)數(shù)器的

    2024年02月02日
    瀏覽(23)
  • 基于STM32CubeMX和keil采用STM32F407的基本定時(shí)器中斷實(shí)現(xiàn)LED閃爍

    基于STM32CubeMX和keil采用STM32F407的基本定時(shí)器中斷實(shí)現(xiàn)LED閃爍

    定時(shí)器有三種,基本定時(shí)器,通用定時(shí)器,以及高級(jí)定時(shí)器。 這篇博客以最簡單的基本定時(shí)器為例,實(shí)現(xiàn)LED的閃爍。 后面兩種定時(shí)器的用法后面再寫。 實(shí)現(xiàn)功能: TIM6控制LED每隔0.5s變一次狀態(tài)。 TIM7控制LED1常量2s后熄滅。 因?yàn)槎际怯玫絃ED,所以和上一篇基于STM32CubeMX與keil采

    2024年02月04日
    瀏覽(25)
  • 基于CubeMX(hal庫)stm32中hrtim高分辨率定時(shí)器的基本使用(自存)

    基于CubeMX(hal庫)stm32中hrtim高分辨率定時(shí)器的基本使用(自存)

    1、選通道 單通道輸出or雙通道輸出 2、Timer A~F配置 (Master Timer不用管) 比較值Compare 個(gè)人感覺跟CCR差不多的意思, 注意不要大于上面的Period就行 設(shè)置上升沿和下降沿時(shí)間: 若想讓上設(shè)Compare=CCR 如圖設(shè)置 即可 即在 計(jì)數(shù)到Compare1時(shí)拉低,計(jì)數(shù)溢出時(shí)拉高 所以上圖輸出頻率10kHz占

    2024年02月04日
    瀏覽(25)
  • 野火STM32電機(jī)系列(五)Cubemx配置高級(jí)定時(shí)器TIM1

    野火STM32電機(jī)系列(五)Cubemx配置高級(jí)定時(shí)器TIM1

    鴿了一段時(shí)間,放心不會(huì)斷的哈,目前僅僅是顯示屏壞了,不影響后面項(xiàng)目 前文已經(jīng)配置了GPIO、編碼器 本節(jié)講解CubeMX高級(jí)定時(shí)器TIM1配置帶死區(qū)的6路互補(bǔ)的PWM 同時(shí)配置信號(hào)觸發(fā)后續(xù)ADC采集 板子引角的原理圖如下 對(duì)應(yīng)的: Motor1--U+--PA8--TIM1_CH1 Motor1--U---PB13--TIM1_CH1N Motor1--V+--

    2024年02月15日
    瀏覽(27)
  • 【STM32】定時(shí)器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    【STM32】定時(shí)器1觸發(fā)ADC多(規(guī)則)通道采樣+DMA(CUBEMX配置)

    在用單片機(jī)做電源控制時(shí)不得不提ADC采集,離散系統(tǒng)是有固定的執(zhí)行周期的,所以我們采樣也是要固定時(shí)間去采樣。然后就是我希望pwm波(定時(shí)器1產(chǎn)出)的頻率與采樣頻率一致。 我下面演示的是G431CBU6,當(dāng)然其他芯片也大差不差了。 說一下大致流程,TIM1觸發(fā)ADC采樣,然后

    2024年02月01日
    瀏覽(36)
  • 【HAL庫】STM32CubeMX開發(fā)----非阻塞延時(shí)實(shí)驗(yàn)----SysTick(滴答定時(shí)器)中斷

    【HAL庫】STM32CubeMX開發(fā)----非阻塞延時(shí)實(shí)驗(yàn)----SysTick(滴答定時(shí)器)中斷

    STM32CubeMX 下載和安裝 詳細(xì)教程 【HAL庫】STM32CubeMX開發(fā)----STM32F103/F207/F407----目錄 HAL庫 有自帶的 ms級(jí) 延時(shí)函數(shù): HAL_Delay(); 缺點(diǎn): 這是 阻塞延時(shí) 方式,就是延時(shí)期間,什么都不能干,這樣很浪費(fèi)資源。 這篇文章主要介紹,利用 SysTick(滴答定時(shí)器)中斷 實(shí)現(xiàn) 非阻塞延時(shí) 的實(shí)驗(yàn)

    2024年02月16日
    瀏覽(99)
  • STM32CUBEMX配置 定時(shí)器中斷 和 上升沿中斷(實(shí)現(xiàn)檢測(cè)1s以內(nèi)的脈沖個(gè)數(shù))

    STM32CUBEMX配置 定時(shí)器中斷 和 上升沿中斷(實(shí)現(xiàn)檢測(cè)1s以內(nèi)的脈沖個(gè)數(shù))

    ———————————————————————————————————— ? 大家好哇!我是小光,嵌入式愛好者,一個(gè)想要成為系統(tǒng)架構(gòu)師的大三學(xué)生。 ?最近在開發(fā)一個(gè)STM32H723ZGT6的板子,使用STM32CUBEMX做了很多驅(qū)動(dòng),包括ADC、UART、RS485、EEPROM(IIC)、FLASH(SPI)等等。

    2024年02月16日
    瀏覽(17)
  • 初出茅廬的小李博客之STM32CubeMx配置定時(shí)器的編碼器模式

    初出茅廬的小李博客之STM32CubeMx配置定時(shí)器的編碼器模式

    上次文章寫了編碼器是如何工作的,今天就來用STM32F103C8T6的TIM3的通道1跟通道2編寫一個(gè)編碼器識(shí)別程序。 話不多說,上教程! 選擇外部高速時(shí)鐘源HSE 選擇中斷模式觸發(fā)下降沿有效 默認(rèn)是上拉輸入 添加用戶標(biāo)簽為SWITCH 使能NVIC配置 選擇編碼器模式 分頻值設(shè)置為2-1 計(jì)數(shù)值設(shè)

    2024年02月12日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包