www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1.STM32的Timer簡介STM32中一共有11個定時器,其中2個高級控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統(tǒng)嘀嗒定時器。其中系統(tǒng)嘀嗒定時器是前文中所描述的SysTick,看門狗定時器以后再詳細(xì)

1.STM32的Timer簡介

STM32中一共有11個定時器,其中2個高級控制定時器,4個普通定時器和2個基本定時器,以及2個看門狗定時器和1個系統(tǒng)嘀嗒定時器。其中系統(tǒng)嘀嗒定時器是前文中所描述的SysTick,看門狗定時器以后再詳細(xì)研究。今天主要是研究剩下的8個定時器。

定時器

計數(shù)器分辨率

計數(shù)器類型

預(yù)分頻系數(shù)

產(chǎn)生DMA請求

捕獲/比較通道

互補(bǔ)輸出

TIM1

TIM8

16位

向上,向下,向上/向下

1-65536之間的任意數(shù)

可以

4

TIM2

TIM3

TIM4

TIM5

16位

向上,向下,向上/向下

1-65536之間的任意數(shù)

可以

4

沒有

TIM6

TIM7

16位

向上

1-65536之間的任意數(shù)

可以

0

沒有

其中TIM1和TIM8是能夠產(chǎn)生3對PWM互補(bǔ)輸出的高級登時其,常用于三相電機(jī)的驅(qū)動,時鐘由APB2的輸出產(chǎn)生。TIM2-TIM5是普通定時器,TIM6和TIM7是基本定時器,其時鐘由APB1輸出產(chǎn)生。由于STM32的TIMER功能太復(fù)雜了,所以只能一點一點的學(xué)習(xí)。因此今天就從最簡單的開始學(xué)習(xí)起,也就是TIM2-TIM5普通定時器的定時功能。

2.普通定時器TIM2-TIM5

2.1時鐘來源

計數(shù)器時鐘可以由下列時鐘源提供:

·內(nèi)部時鐘(CK_INT)

·外部時鐘模式1:外部輸入腳(TIx)

·外部時鐘模式2:外部觸發(fā)輸入(ETR)

·內(nèi)部觸發(fā)輸入(ITRx):使用一個定時器作為另一個定時器的預(yù)分頻器,如可以配置一個定時器Timer1而作為另一個定時器Timer2的預(yù)分頻器。

由于今天的學(xué)習(xí)是最基本的定時功能,所以采用內(nèi)部時鐘。TIM2-TIM5的時鐘不是直接來自于APB1,而是來自于輸入為APB1的一個倍頻器。這個倍頻器的作用是:當(dāng)APB1的預(yù)分頻系數(shù)為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;當(dāng)APB1的預(yù)分頻系數(shù)為其他數(shù)值時(即預(yù)分頻系數(shù)為2、4、8或16),這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率的2倍。APB1的分頻在STM32_SYSTICK的學(xué)習(xí)筆記中有詳細(xì)描述。通過倍頻器給定時器時鐘的好處是:APB1不但要給TIM2-TIM5提供時鐘,還要為其他的外設(shè)提供時鐘;設(shè)置這個倍頻器可以保證在其他外設(shè)使用較低時鐘頻率時,TIM2-TIM5仍然可以得到較高的時鐘頻率。

2.2計數(shù)器模式

TIM2-TIM5可以由向上計數(shù)、向下計數(shù)、向上向下雙向計數(shù)。向上計數(shù)模式中,計數(shù)器從0計數(shù)到自動加載值(TIMx_ARR計數(shù)器內(nèi)容),然后重新從0開始計數(shù)并且產(chǎn)生一個計數(shù)器溢出事件。在向下模式中,計數(shù)器從自動裝入的值(TIMx_ARR)開始向下計數(shù)到0,然后從自動裝入的值重新開始,并產(chǎn)生一個計數(shù)器向下溢出事件。而中央對齊模式(向上/向下計數(shù))是計數(shù)器從0開始計數(shù)到自動裝入的值-1,產(chǎn)生一個計數(shù)器溢出事件,然后向下計數(shù)到1并且產(chǎn)生一個計數(shù)器溢出事件;然后再從0開始重新計數(shù)。

1..自動裝載寄存器部分實際上包含兩個寄存器:
自動裝載寄存器緩沖寄存器 和 自動裝載寄存器影子寄存器
其中自動裝載寄存器緩沖寄存器可以有ARPE位控制是否起作用:
ARPE = 0 寫"自動裝載寄存器"時,數(shù)據(jù)直接寫入到"自動裝載寄存器緩沖寄存器"的同時,立即更新到"自動裝載寄存器影子寄存器"
ARPE = 1 寫"自動裝載寄存器"時,數(shù)據(jù)直接寫入到"自動裝載寄存器緩沖寄存器"的同時,只有更新事件發(fā)生的時候,才更新到"自動裝載寄存器影子寄存器"
2.預(yù)分頻器控制寄存器也分為兩部分:
預(yù)分頻器緩沖寄存器 和 預(yù)分頻器影子寄存器
當(dāng)更新事件發(fā)生的時候,"預(yù)分頻器緩沖寄存器"的內(nèi)容更新到"預(yù)分頻器影子寄存器中"

3.UDIS位作用:
UDIS = 1 禁止更新事件發(fā)生,但是計數(shù)器上下益處使,計數(shù)器和預(yù)分頻計數(shù)器歸0不受影響
UDIS = 0 允許更新事件發(fā)生
4.URS位作用:
URS = 1 只有計數(shù)器上下溢出才產(chǎn)生更新事件,從而產(chǎn)生中斷和DMA請求
URS = 0 計數(shù)器上下溢出,軟件設(shè)置UG位以及從模式控制器產(chǎn)生的更新 都會產(chǎn)生更新事件,從而產(chǎn)生中斷和DMA請求

編程步驟
1. 配置優(yōu)先級;
2. 使能時鐘
3. 配置GPIO;
4. 配置TIME;
5.使能計數(shù)器;
6.開中斷;
7.清除標(biāo)志位;
具體配置如下:
(1) NVIC_Configuration(void);配置優(yōu)先級
(2) void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)使能時鐘
(3) void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);配置GPIO
(4) TIM_Configuration (void);配置TIM6/TIM7
(5) TIM_Cmd(TIM7, ENABLE);使能定時器
(6) TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE);使能中斷
(7) TIM_ClearFlag(TIM7, TIM_FLAG_Update);清除標(biāo)志位
步驟(4)中的預(yù)分頻系數(shù)用來確定TIMx所使用的時鐘頻率,具體計算方法為:CK_INT/(TIM_Perscaler+1)。CK_INT是內(nèi)部時鐘源的頻率,是根據(jù)2.1中所描述的APB1的倍頻器送出的時鐘,TIM_Perscaler是用戶設(shè)定的預(yù)分頻系數(shù),其值范圍是從0 – 65535。
步驟(4)中的時鐘分割定義的是在定時器時鐘頻率(CK_INT)與數(shù)字濾波器(ETR,TIx)使用的采樣頻率之間的分頻比例。TIM_ClockDivision的參數(shù)如下表:
TIM_ClockDivision描述二進(jìn)制值
TIM_CKD_DIV1tDTS = Tck_tim0x00
TIM_CKD_DIV2tDTS = 2 * Tck_tim0x01
TIM_CKD_DIV4tDTS = 4 * Tck_tim0x10
步驟(4)中需要禁止使用預(yù)裝載緩沖器。當(dāng)預(yù)裝載緩沖器被禁止時,寫入自動裝入的值(TIMx_ARR)的數(shù)值會直接傳送到對應(yīng)的影子寄存器;如果使能預(yù)加載寄存器,則寫入ARR的數(shù)值會在更新事件時,才會從預(yù)加載寄存器傳送到對應(yīng)的影子寄存器。
ARM中,有的邏輯寄存器在物理上對應(yīng)2個寄存器,一個是程序員可以寫入或讀出的寄存器,稱為preload register(預(yù)裝載寄存器),另一個是程序員看不見的、但在操作中真正起作用的寄存器,稱為shadow register(影子寄存器);設(shè)計preload register和shadow register的好處是,所有真正需要起作用的寄存器(shadow register)可以在同一個時間(發(fā)生更新事件時)被更新為所對應(yīng)的preload register的內(nèi)容,這樣可以保證多個通道的操作能夠準(zhǔn)確地同步。如果沒有shadow register,或者preload register和shadow register是直通的,即軟件更新preload register時,同時更新了shadow register,因為軟件不可能在一個相同的時刻同時更新多個寄存器,結(jié)果造成多個通道的時序不能同步,如果再加上其它因素(例如中斷),多個通道的時序關(guān)系有可能是不可預(yù)知的。

3.程序源代碼

本例實現(xiàn)的是通過TIM2的定時功能,使得LED燈按照1s的時間間隔來閃爍

#include "stm32f10x_lib.h"

void RCC_cfg();

void TIMER_cfg();

void NVIC_cfg();

void GPIO_cfg();

int main()

{

RCC_cfg();

NVIC_cfg();

GPIO_cfg();

TIMER_cfg();

//開啟定時器2

TIM_Cmd(TIM2,ENABLE);

while(1);

}

void RCC_cfg()

{

//定義錯誤狀態(tài)變量

ErrorStatus HSEStartUpStatus;

//將RCC寄存器重新設(shè)置為默認(rèn)值

RCC_DeInit();

//打開外部高速時鐘晶振

RCC_HSEConfig(RCC_HSE_ON);

//等待外部高速時鐘晶振工作

HSEStartUpStatus = RCC_WaitForHSEStartUp();

if(HSEStartUpStatus == SUCCESS)

{

//設(shè)置AHB時鐘(HCLK)為系統(tǒng)時鐘

RCC_HCLKConfig(RCC_SYSCLK_Div1);

//設(shè)置高速AHB時鐘(APB2)為HCLK時鐘

RCC_PCLK2Config(RCC_HCLK_Div1);

//設(shè)置低速AHB時鐘(APB1)為HCLK的2分頻

RCC_PCLK1Config(RCC_HCLK_Div2);

//設(shè)置FLASH代碼延時

FLASH_SetLatency(FLASH_Latency_2);

//使能預(yù)取指緩存

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable)

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

在嵌入式開發(fā)中,STM32的時鐘系統(tǒng)因其靈活性和復(fù)雜性成為開發(fā)者關(guān)注的焦點。然而,看似簡單的時鐘配置背后,隱藏著諸多易被忽視的陷阱,輕則導(dǎo)致系統(tǒng)不穩(wěn)定,重則引發(fā)硬件損壞。本文從時鐘源選擇、PLL配置、總線時鐘分配等關(guān)鍵環(huán)...

關(guān)鍵字: STM32 時鐘系統(tǒng)

在嵌入式系統(tǒng)開發(fā)中,STM32系列微控制器的內(nèi)部溫度傳感器因其低成本、高集成度特性,廣泛應(yīng)用于設(shè)備自檢、環(huán)境監(jiān)測等場景。然而,受芯片工藝差異和電源噪聲影響,其原始數(shù)據(jù)存在±1.5℃的固有誤差。本文從硬件配置、校準(zhǔn)算法、軟...

關(guān)鍵字: STM32 溫度傳感器

在能源效率與智能化需求雙重驅(qū)動下,AC-DC轉(zhuǎn)換器的數(shù)字控制技術(shù)正經(jīng)歷從傳統(tǒng)模擬方案向全數(shù)字架構(gòu)的深刻變革。基于STM32微控制器的PFM(脈沖頻率調(diào)制)+PWM(脈沖寬度調(diào)制)混合調(diào)制策略,結(jié)合動態(tài)電壓調(diào)整(Dynam...

關(guān)鍵字: AC-DC STM32

當(dāng)前智能家居產(chǎn)品需求不斷增長 ,在這一背景下 ,對現(xiàn)有澆花裝置缺陷進(jìn)行了改進(jìn) ,設(shè)計出基于STM32單片機(jī)的全 自動家用澆花機(jī)器人。該設(shè)計主要由機(jī)械結(jié)構(gòu)和控制系統(tǒng)構(gòu)成 ,機(jī)械結(jié)構(gòu)通過麥克納姆輪底盤與噴灑裝置的結(jié)合實現(xiàn)機(jī)器...

關(guān)鍵字: STM32 麥克納姆輪 安全可靠 通過性強(qiáng)

用c++編程似乎是讓你的Arduino項目起步的障礙嗎?您想要一種更直觀的微控制器編程方式嗎?那你需要了解一下Visuino!這個圖形化編程平臺將復(fù)雜電子項目的創(chuàng)建變成了拖動和連接塊的簡單任務(wù)。在本文中,我們將帶您完成使...

關(guān)鍵字: Visuino Arduino ESP32 STM32

基于STM32與LoRa技術(shù)的無線傳感網(wǎng)絡(luò)憑借其低功耗、廣覆蓋、抗干擾等特性,成為環(huán)境監(jiān)測、工業(yè)自動化等場景的核心解決方案。然而,如何在復(fù)雜電磁環(huán)境中實現(xiàn)高效休眠調(diào)度與動態(tài)信道優(yōu)化,成為提升網(wǎng)絡(luò)能效與可靠性的關(guān)鍵挑戰(zhàn)。本...

關(guān)鍵字: STM32 LoRa

在實時控制系統(tǒng)、高速通信協(xié)議處理及高精度數(shù)據(jù)采集等對時間敏感的應(yīng)用場景中,中斷響應(yīng)延遲的優(yōu)化直接決定了系統(tǒng)的可靠性與性能上限。STM32系列微控制器憑借其靈活的嵌套向量中斷控制器(NVIC)、多通道直接內(nèi)存訪問(DMA)...

關(guān)鍵字: STM32 DMA

數(shù)字電源技術(shù)向高功率密度、高效率與高動態(tài)響應(yīng)方向加速演進(jìn),STM32微控制器憑借其基于DSP庫的算法加速能力與對LLC諧振變換器的精準(zhǔn)控制架構(gòu),成為優(yōu)化電源動態(tài)性能的核心平臺。相較于傳統(tǒng)模擬控制或通用型數(shù)字控制器,STM...

關(guān)鍵字: STM32 數(shù)字電源

STM32微控制器憑借其針對電機(jī)控制場景的深度優(yōu)化,成為高精度、高可靠性驅(qū)動系統(tǒng)的核心選擇。相較于通用型MCU,STM32在電機(jī)控制領(lǐng)域的核心優(yōu)勢集中體現(xiàn)在FOC(磁場定向控制)算法的硬件加速引擎與PWM死區(qū)時間的動態(tài)補(bǔ)...

關(guān)鍵字: STM32 電機(jī)控制

無線充電技術(shù)加速滲透消費(fèi)電子與汽車電子領(lǐng)域,基于Qi協(xié)議的無線充電發(fā)射端開發(fā)成為智能設(shè)備能量補(bǔ)給的核心課題。傳統(tǒng)模擬控制方案存在響應(yīng)滯后、參數(shù)調(diào)整困難等問題,而基于STM32的數(shù)字PID控制結(jié)合FOD(Foreign O...

關(guān)鍵字: STM32 無線充電
關(guān)閉