娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月10日(星期二)

正在發生

2018年12月10日 | STM32 通用定時器的定時功能 學習筆記

發布者:靜靜思索 來源: eefocus關鍵字:STM32  通用定時器  定時功能 手機看文章 掃描二維碼
隨時隨地手機看文章

這節主要講下STM32 通用定時器的定時功能。


一、TIMx的時鐘源問題:


STM32有8路寄存器,包括TIM1和TIM8兩個高級定時器,TIM6和TIM7兩個基本定時器,TIM2-TIM5四個通用定時器,定時器是完全獨立的,而且沒有互相共享任何資源,它們可以一起同步操作,所有TIMx定時器在內部相連,用于定時器同步或鏈接。當一個定時器處于主模式時,它可以對另一個處于從模式的定時器的計數器進行復位、啟動、停止或提供時鐘等操作。其中TIM1和TIM8掛在APB2總線上,而TIM2-TIM7則掛在APB1總線上。他們所在的APB2總線也比APB1總線要好。APB2可以工作在72MHz下,而APB1最大是36MHz。


1)定時器的時鐘:


計數器時鐘可由下列時鐘源提供: 


 1:內部時鐘(CK_INT) 


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


 3:外部時鐘模式2:外部觸發輸入(ETR) 


 4:內部觸發輸入(ITRx):使用一個定時器作為另一個定時器的預分頻器,如可以配置一個定時器Timer1而作為另一個定時器Timer2的預分頻器。


這些時鐘,具體選擇哪個可以通過TIMx_SMCR寄存器的相關位來設置。這里的CK_INT時鐘是從APB1倍頻的來的,除非APB1的時鐘分頻數設置為1,否則通用定時器TIMx的時鐘是APB1時鐘的2倍,當APB1的時鐘不分頻的時候,通用定時器TIMx的時鐘就等于APB1的時鐘。這里還要注意的就是高級定時器的時鐘不是來自APB1,而是來自APB2的。


2)定時器的核心:


說到定時器的核心,自然少不了兩個,一個是計數時鐘(每隔多長時間計一次),二是計多少次溢出,這兩個就共同決定了溢出時間。定時器的計數時鐘根據定時器的不同分別來自APB1或APB2,計數時鐘說白了就是要把一秒分成很多份,但由于總線時鐘一般在數十兆,經過分頻的APB也在數十兆,所以要把APB再分頻至更低的頻率,這就需要設置預分頻寄存器。例如當前APB1為36MHz,除非APB1的時鐘分頻數設置為1,否則通用定時器TIMx的時鐘是APB1時鐘的2倍,這時的TIMx時鐘為72MHz,因此分頻至10KHz需要設置預分頻器寄存器TIMx_PSC(如下圖)為7199,為什么是7199而不是7200呢?


下面寄存器介紹說明了這點:計數器時鐘CK_CNT等于TIMx時鐘/(PSC+1),所以只需設置寄存器值7199就行了。


這里10KHz的頻率相當于把一秒分為10000份,即0.0001秒,定時器每隔0.0001秒漲一次。


注:因為PSC是16位寄存器,所以值范圍為0-65535。


計數器自動重裝載寄存器TIMx_ARR,該寄存器存放的就是計數器要增加的次數(計多少次溢出)。


注:因為ARR也是16位寄存器,所以值范圍為0-65535。


這樣這兩個寄存器決定了溢出時間,接著上面的例子,如果設置ARR寄存器值為5000,那就是說定時器每隔0.0001秒漲一次,總共漲5000次,這樣就是0.5秒溢出一次。


總結下來,定時器的溢出公式為:溢出時間(秒)= ((ARR+1)*(PSC+1))/ TIMx時鐘CK_INT(MHz)


定時器的時鐘不是直接來自APB1或APB2,而是來自于輸入為APB1或APB2的一個倍頻器。


下面以定時器2~7的時鐘說明這個倍頻器的作用:當APB1的預分頻系數為1時,這個倍頻器不起作用,定時器的時鐘頻率等于APB1的頻率;


當APB1的預分頻系數為其它數值(即預分頻系數為2、4、8或16)時,這個倍頻器起作用,定時器的時鐘頻率等于APB1的頻率兩倍。


假定AHB=36MHz,因為APB1允許的最大頻率為36MHz,所以APB1的預分頻系數可以取任意數值;


當預分頻系數=1時,APB1=36MHz,TIM2~7的時鐘頻率=36MHz(倍頻器不起作用);


當預分頻系數=2時,APB1=18MHz,在倍頻器的作用下,TIM2~7的時鐘頻率=36MHz。


有人會問,既然需要TIM2~7的時鐘頻率=36MHz,為什么不直接取APB1的預分頻系數=1?


答案是:APB1不但要為TIM2~7提供時鐘,而且還要為其它外設提供時鐘;


設置這個倍頻器可以在保證其它外設使用較低時鐘頻率時,TIM2~7仍能得到較高的時鐘頻率。


再舉個例子:當AHB=72MHz時,APB1的預分頻系數必須大于2,因為APB1的最大頻率只能為36MHz。


如果APB1的預分頻系數=2,則因為這個倍頻器,TIM2~7仍然能夠得到72MHz的時鐘頻率。能夠使用更高的時鐘頻率,無疑提高了定時器的分辨率,這也正是設計這個倍頻器的初衷。


二、TIM通用定時器配置步驟:


1.配置TIM時鐘  


RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);


2.定時器基本配置


void TIM2_Configuration(void)

{

TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;


TIM_DeInit(TIM2); //復位TIM2定時器


TIM_TimeBaseStructure.TIM_Period = 5-1;        // 2.5ms    

TIM_TimeBaseStructure.TIM_Prescaler = 36000-1;    // 分頻36000      

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  // 時鐘分頻 

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  // 計數方向向上計數

TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);



TIM_ClearFlag(TIM2, TIM_FLAG_Update);



TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); 



TIM_Cmd(TIM2, ENABLE);      

}



TIM_Period設置了在下一個更新事件裝入活動的自動重裝載寄存器周期的值。它的取值必須在0x0000和0xFFFF之間。

TIM_Prescaler設置了用來作為TIMx時鐘頻率除數的預分頻值。它的取值必須在0x0000和0xFFFF之間。

TIM_ClockDivision的作用是做一段延時,一般在特殊場合的時候會用到,可不關心。

TIM_CounterMode選擇了計數器模式:

TIM_CounterMode_Up                       //TIM向上計數模式

TIM_CounterMode_Down                     //TIM向下計數模式

TIM_CounterMode_CenterAligned1   //TIM中央對齊模式1計數模式

TIM_CounterMode_CenterAligned2   //TIM中央對齊模式2計數模式

TIM_CounterMode_CenterAligned3   //TIM中央對齊模式3計數模式

單片機時鐘頻率72MHz,APB1 二分頻36MHz,故TIM2自動2倍頻至72MHz,故定時器中斷頻率為72000000/36000/5=400Hz


3.使能定時器中斷TIM_Cmd(TIM2, ENABLE);


4.配置NVIC。


    NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;

    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 4; 

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_Init(&NVIC_InitStructure);


5.寫中斷函數


void TIM2_IRQHandler(void)

{

......//中斷處理

}   


--------------------- 


作者:LIUYONG19 


來源:CSDN 


原文:https://blog.csdn.net/LIUYONG19/article/details/75383854 


版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


關鍵字:STM32  通用定時器  定時功能 引用地址:STM32 通用定時器的定時功能 學習筆記

上一篇:STM32 通用定時器的輸出PWM功能 學習筆記
下一篇:stm32 USART_IT_IDLE中斷 一幀數據

推薦閱讀

眼下,中國的集成電路產業正在加緊追趕世界先進水平的腳步,除了像CPU、、GPU、DSP、FPGA這樣的核心處理器之外,我們在高性能模擬器件方面,還處于后來學習者的角色。而ADC/DAC是模數混合IC,是連接模擬和數字世界之間的橋梁,具有很高的技術含量。ADC、DAC,特別是超高速(采樣率≥100Msps)芯片,是未來100G光通信、4G/5G基站、測試測量儀器設備,以及數...
“計量” 這一術語在中國成為專業術語是在1953年開始使用,以取代使用古遠的“度量衡”。根據國際計量局(BIPM)、國際電工委員會(IEC)、國際標準化組織(ISO)、國際法制計量組織(OIML)聯合制定的《國際通用計量學基本名詞》中定義計量學(Metrology)為有關測量的科學,是保證測量實現單位統一和量值準確可靠的一門科學。無線電計量作為計量學的一個重要的領...
利用兆歐表和萬用表檢查晶閘管觸發能力的電路見圖1。將萬用表撥至1mADC檔,串聯在電路中。首先斷開開關,按額定轉速搖兆歐表,兆歐表上的讀數很快趨于穩定,說明晶閘管已正向擊穿,把兆歐表的輸出電壓鉗位于直流轉折電壓V(BO)上。此時晶閘管并未導通,所以毫安表讀數為零。然后閉合開關,晶閘管導通,兆歐表讀數變成零,毫安表指示出通態電流值。實例:...
近日,三六零集團(股票代碼:601360.SH)旗下的智能網聯汽車安全實驗室(以下簡稱360 Sky-Go)發現了多個汽車操作系統QNX的安全漏洞,其中更有在通用漏洞評分系統(CVSS)中獲得9.8分(滿分10分)的嚴重級別的遠程代碼執行漏洞,該漏洞影響BlackBerry QNX SDP從6.4到7.1等多個版本,成為影響車輛安全的重要隱患,目前上述漏洞官方已經發布修復方案。作為汽車...

史海拾趣

問答坊 | AI 解惑

nioss 問題

我建立了一個NIOSS2最小系統,硬件平臺編繹成功,軟件用的是模板中的HELLO_LED,總編繹后下載入FPGA,但是卻不運行,使用NIOSS2集成開發環境中的run as nioss 2 hardware 程序才開始運行,不知道有哪位知道這是怎么回事?…

查看全部問答∨

cpu片內寄存器讀寫

各位大蝦,小弟最近遇到一個關于cpu寄存器讀寫的問題,望不吝賜教 我在bootloader里面,對cpu里面的控制寄存器進行,但是無法寫成功。比如:*(UINT32 *)(CAP_Reg_Addr_Base+0x0008)=0x10000000;進行寫時,會死在這里。對其他的寄存器也是這樣。這 ...…

查看全部問答∨

lwip實現GPRS通信實例代碼

我的平臺是S3C2410(ucos-ii)+MC35I,在UCOS上移植了LWIP1.3.1 ,但是我不知道該怎樣應用LWIP1.3.1里面給定的函數實現GPRS通信,有人有相關方面的代碼或者實例嗎?謝謝,急…

查看全部問答∨

奇怪的LoadImage()失敗

  我用的是WinCE5.0, HPC部分在explorerbase.rc增加自己的圖片 a. 如果是sysgen或build sysgen生成的image,執行LoadImage自己的圖片時,失敗,GetLastError()返回1814 b. 如果是sysgen或build sysgen HPC,然后再make run-time im ...…

查看全部問答∨

大家幫幫我啊

我自己配置的CE os怎么看不到NANDFLASH的盤啊   奇怪的是我燒寫在NAND里面的OS只是剛開始能運行 在關機在開機就運行不了了   是不是我的NANDFLASH驅動沒配置進去啊 謝謝各位老大啊 …

查看全部問答∨

武漢招聘_急招硬件工程師

1.硬件工程師(急)   職位要求: 1.本科或以上學歷,通信,電子,計算機相關專業,1年以上硬件開發工作經驗。大專學歷,2年以上經驗; 2.熟悉嵌入式系統硬件開發,有32位嵌入式系統硬件電路設計經驗(熟練使用Protel、ORCAD等,能獨 ...…

查看全部問答∨

issp是什么?

程序里面有涉及到issp,好象是單pin的,通過它可以刷flash,哪位大俠給介紹一下這個東西,謝謝…

查看全部問答∨

不一樣的51教程 之五 寫一個真正的......小~~程序

前邊,我講完了 51單片機 的 尋址方式 和 指令系統,以及幾個傳統8051都有的基本內部資源(所謂傳統8051,或者51單片機,在大多數情況下,請當它們是一回事。)現在我們來講一下,我們實際如何寫程序,因為只是舉例,而且篇幅關系,我們只寫一個很 ...…

查看全部問答∨

不知不覺喜歡上msp430。

      剛開始的工作時,有次去電子市場買東西,有個先生問我,會不會430,當時壓根就沒聽說過,因為只會51了,也沒在意。后來進了公司,正好遇到在做項目,基于PIC的,程序別人已經寫好了,只是要修改,我略懂一點,也就 ...…

查看全部問答∨

LM3S328的ADC實驗

前期問了ADC的實驗問題,但一直沒得到解答,現在終于做出來了,分享給大家 實驗效果是:采樣電壓大于1.5v燈就亮,反之燈暗。。 注意:每次調整完滑動變阻器都要重新仿真 后期會改進,用1602或UART顯示電壓數字和實時采樣 [ 本帖最后由 shmily53 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 防城港市| 桃园市| 商河县| 花莲市| 广东省| 墨脱县| 曲靖市| 弥渡县| 枣庄市| 达州市| 石棉县| 新干县| 梨树县| 伽师县| 永嘉县| 海南省| 永仁县| 和政县| 博兴县| 蒲城县| 岫岩| 龙泉市| 雷波县| 吉木萨尔县| 安康市| 离岛区| 秦皇岛市| 井冈山市| 道孚县| 河西区| 文安县| 正镶白旗| 巴中市| 荥阳市| 依安县| 独山县| 新民市| 满洲里市| 大石桥市| 天峻县| 康乐县|