STM32F0xx TIM基本延時配置詳細過程

2021-08-24 17:48:08 字數 2323 閱讀 9112

前言

關於定時器大家都應該不會陌生,因為處理器都有這個功能。今天總結的f0系列晶元的定時器根據晶元型號不同,數量也不同。定時器分類:基本定時器、通用定時器和高階定時器。計數字數也有不同,有16位的,有32位的。當然,有的晶元功能強大一點,上面功能都有。有的功能很簡單,32位,基本定時器這些都沒有。所以,根據自己專案需求原則合適型號的晶元很重要。

今天總結的工程是「tim基礎延時」,也就是基本定時器tim6的延時功能,主要是針對基本定時器來總結。這裡有點需要注意的就是f0系列的晶元有些小容量(flash)的晶元沒有tim6基本定時器(如:f030、f070小容量晶元)。因此,在使用今天提供的軟體工程時一定要注意這一點,否則程式會有問題。不過,如果你使用的晶元沒有基本定時器,那也沒關係,基本定時器是最基本的,還有通用定時器和高階定時器,這些定時器包含了基本定時器的功能(通用、高階定時器後期我會總結)。

今天會對基本定時器(tim6)的計數原理和延時計數的方法來總結基本定時器的延時功能。

st標準外設庫和參考手冊、資料手冊等都可以在st官網

訪問密碼 f9ff

訪問密碼 8c37

準備工作

在昨天的軟體工程基礎上,新建源程式檔案(timer.c 和 timer.h),在工程中新增新建的源程式檔案timer.c和使用到標準外設庫stm32f0xx_tim.c。如何在工程中新增原始檔請看以前的文章「stm32f0_新建軟體工程詳細過程」,新增完成如下圖:

注意:檔案所在位置最好對應目錄,方便管理。比如:timer.c放在bsp檔案下,新增在工程中bsp組下面。

計數原理

tim基礎定時器的內部框架結構比較簡單,就是通過計數,計滿之後相應乙個事件,如下圖。圖中標記的數值就是我提供飛軟體工程中配置的值,分頻之後1秒計數1m個脈衝,需要計滿10個脈衝,也就是需要10us是時間。所以,我提供函式介面基準的延時10us(詳情請看源程式**)。

配置過程詳情

①rcc時鐘

該函式位於bsp.c檔案下面;

我個人習慣第一步配置時鐘,st官方提供的例程也是把配置時鐘放在前面。關於rcc時鐘的配置比較重要,有好幾次我就是由於沒有配置相應rcc時鐘,讓我找了很久的問題,最後才發現是rcc時鐘沒有配置。

注意:

外設時鐘不要隨便新增,比如:rcc_apb1外設不要配置在rcc_apb2時鐘裡面【如:rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);這樣能編譯過,但是錯誤的】

②tim6的配置

該函式位於timer.c檔案下面;

這裡就是對tim6的配置(分頻、過載值)。

注意:

至於上面的數值為什麼減1,原因很簡單(計數從0開始,到上乙個值就需要減1)。

③tim6延時10us

該函式位於timer.c檔案下面;

這裡的「等待10us延時到」,就是上面我講解原理中的「計數滿10個」響應事件。

說明

stm32f0的晶元軟體相容性很好,可以適用於f0其他很多態號的晶元(具體請看手冊、或者親自測試)。

今天的工程是基於昨天的工程「stm32f0xx_usart收發配置詳細過程」修改而來,以上例項總結僅供參考,若有不對之處,敬請諒解。

最後

STM32F0xx TIM輸出PWM配置詳細過程

前言 前面我說過stm32的定時器功能很強大,今天就來總結一下它的另外乙個 強大 功能 tim的比較輸出功能,輸出可調pwm波形。直接呼叫函式介面 tim2 ch1 pwm uint32 t freq,uint16 t dutycycle 傳入頻率和占空比就能輸出指定的波形。我提供的軟體工程直接呼叫...

STM32F0xx EXIT中斷配置詳細過程

概述exit外部中斷在使用到按鍵或者開關控制等應用中比較常見,低功耗中斷喚醒也是很常見的一種。因此,exit在實際專案開發中也是比較常見的一種。stm32f0中外部中斷exit屬於中斷和事件的章節,請看參考手冊第十二章,但需要配合系統配置控制器 system configuration contro...

STM32F0系列串列埠DMA收發資料

這裡用的庫函式版本,晶元型號為stm32f030c8t6.在用到串列埠dma時,要按以下幾個步驟進行。1.確定使用的串口號,這裡,我用的是usart2,對應復用的引腳是pa2,pa3。再根據資料手冊查詢其對應dma通道。2.先進行串列埠初始化配置 void usart2 init 3.再配置dma初...