小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

中斷是為使單片機(jī)具有對(duì)外部或者內(nèi)部隨機(jī)發(fā)生的事件實(shí)時(shí)處理而設(shè)

 山峰云繞 2022-04-29 發(fā)布于貴州

https://m.toutiao.com/is/F2RmKMr/?=51單片機(jī)入門(mén)教程 



https://m.toutiao.com/is/F2RmKMr/?=51單片機(jī)入門(mén)教程 



中斷是為使單片機(jī)具有對(duì)外部或者內(nèi)部隨機(jī)發(fā)生的事件實(shí)時(shí)處理而設(shè)置的。

把自己想象成單片機(jī)的CPU,你正在洗衣服,但是忽然快遞小哥給你打電話(huà)讓你去拿快遞,于是你停下洗衣服去拿快遞了??爝f小哥的電話(huà)就是中斷信號(hào),告訴你有其他的事情須要先去做,其次你去拿快遞就相當(dāng)于中斷之后要去處理的事情。

51單片機(jī)有五個(gè)中斷源

一.INT0——外部中斷0

二.INT1——外部中斷1

三.T0——定時(shí)器/計(jì)數(shù)器0中斷

四.T1——定時(shí)器/計(jì)數(shù)器1中斷

  1. TI/RI——串行口中斷

文章相對(duì)比較長(zhǎng),字?jǐn)?shù)比較多,大家可以先打開(kāi)頭像關(guān)注我,之后慢慢看,///插播一條:我自己在今年年初錄制了一套還比較系統(tǒng)的入門(mén)單片機(jī)教程,想要的同學(xué)找我拿就行了免費(fèi)的,私信我就可以哦~點(diǎn)我頭像左下角黑色字體加我也能領(lǐng)取哦。最近比較閑,帶做畢設(shè),帶學(xué)生參加省級(jí)或以上比賽///

定時(shí)器的定時(shí)計(jì)算

時(shí)鐘周期定義為時(shí)鐘脈沖的倒數(shù)(時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時(shí)長(zhǎng)周期就是1/12000000),是計(jì)算機(jī)中最根本的、最小的時(shí)長(zhǎng)單位。

機(jī)器周期是指完成一個(gè)根本操作所須要的時(shí)長(zhǎng)。機(jī)器周期主要針對(duì)匯編語(yǔ)言而言,在匯編語(yǔ)言下程序的每一條語(yǔ)句執(zhí)行所運(yùn)用的時(shí)長(zhǎng)都是機(jī)器周期的整數(shù)倍,而且語(yǔ)句占用的時(shí)長(zhǎng)是能夠計(jì)算出來(lái),而C語(yǔ)言一條語(yǔ)句的時(shí)長(zhǎng)是確定的。51單片機(jī)系列在其規(guī)范架構(gòu)下一個(gè)機(jī)器周期是12個(gè)時(shí)鐘周期,也就是12/11059200秒。此時(shí)有不少增強(qiáng)型的51單片機(jī),其速度都比快速,有的1個(gè)機(jī)器周期即是4個(gè)時(shí)鐘周期,有的1個(gè)機(jī)器周期就即是1個(gè)時(shí)鐘周期,也就是說(shuō)大體上其速度能夠到達(dá)規(guī)范51架構(gòu)的3倍或12倍。由于項(xiàng)目中運(yùn)用的是規(guī)范的51單片機(jī),機(jī)器周期是12個(gè)時(shí)鐘周期。

再講解下定時(shí)器和計(jì)數(shù)器這兩個(gè)概念。定時(shí)器和計(jì)數(shù)器是單片機(jī)內(nèi)部的同一個(gè)模塊,通過(guò)配置SFR(特殊功能寄存器)能夠達(dá)到兩種不同的功能,大部分情況下是運(yùn)用定時(shí)器功能,因此也主要來(lái)講定時(shí)器功能,計(jì)數(shù)器功能大家自己了解下即可

配套的單片機(jī)進(jìn)修版采用的12M的沒(méi)源晶振,那么時(shí)鐘周期為1/12000000,機(jī)器周期為12/12000000,假設(shè)定時(shí)20ms,那么須要的機(jī)器周期為0.02/(12/12000000)=20000個(gè),依據(jù)二.1小結(jié)講解的須要在定時(shí)器預(yù)裝65536-20000=45536個(gè)值,由于采用的定時(shí)模式1,將45536化為十六進(jìn)制裝載到寄存器TH0和TL0中,45536 / 256=177,45536 % 256=244,將177轉(zhuǎn)化為十六進(jìn)制0XB1裝載到TH0,將244轉(zhuǎn)化為十六進(jìn)制0XF4裝載到TL0。

同理能夠計(jì)算得16位寄存器最大能定時(shí)65536*(12/12000000)≈65ms,一般來(lái)說(shuō)定時(shí)的時(shí)長(zhǎng)盡量取在0~65ms中間值,如本例中定時(shí)器配置的定時(shí)20ms,如需定時(shí)1s,只有定時(shí)循環(huán)50次即可。讀者能夠計(jì)算下定時(shí)50ms須要多大的裝載初值。

注意:當(dāng)采用1一.0592M晶振時(shí),采用類(lèi)似的計(jì)算方式!

定時(shí)器中斷編程

STM32F1的定時(shí)器系統(tǒng)由2個(gè)基本定時(shí)器(TIM6、TIM7)、4個(gè)通用定時(shí)器(TIM2~TIM5)和2個(gè)高級(jí)定時(shí)器(TIM1、TIM8)所組成?;径〞r(shí)器同51單片機(jī)內(nèi)的定時(shí)器類(lèi)似,功能較為簡(jiǎn)單;通用定時(shí)器在其基礎(chǔ)上增加了輸入捕獲與輸出比較功能;高級(jí)定時(shí)器又在通用定時(shí)器基礎(chǔ)上增加了可編程死去互補(bǔ)輸出、重復(fù)計(jì)數(shù)、帶剎車(chē)(斷路)的功能主要針對(duì)于工業(yè)電機(jī)的控制。

2.1 通用定時(shí)器

STM32F1的通用定時(shí)器內(nèi)有一個(gè)16位自動(dòng)重載計(jì)數(shù)器(CNT)由可編程預(yù)分頻器(PSC)驅(qū)動(dòng),其可用于測(cè)量輸入信號(hào)的脈沖寬度(輸入捕獲)或者生產(chǎn)輸出波形(輸出比較和PWM)。使用定時(shí)器預(yù)分頻器和RCC時(shí)鐘控制器預(yù)分頻器,脈沖長(zhǎng)度和波形周期可以在幾微秒到幾毫秒之間調(diào)整,此外每一個(gè)定時(shí)器都是獨(dú)立的,之間不互相共享任何資源。通用定時(shí)器TIM2~TIM5具備如下功能:

16位向上、向下、向上/向下自動(dòng)裝載計(jì)數(shù)器(TIMx_CNT);

16位可編程預(yù)分頻器,計(jì)數(shù)器時(shí)鐘頻率的分頻系數(shù)為1~65535;

4個(gè)獨(dú)立通道(TIMx_CH1~4),通道可以被用作輸入捕獲、輸出比較、PWM生成和單脈沖模式輸出功能;

可以使用外部信號(hào)(TIMx_ETR)控制定時(shí)器,可實(shí)現(xiàn)多個(gè)定時(shí)器互連的同步電路;

發(fā)生更新(計(jì)數(shù)器溢出、初始化)、觸發(fā)時(shí)間(計(jì)數(shù)器啟動(dòng)、停止、初始化或者由內(nèi)部/外部觸發(fā)計(jì)數(shù))、輸入捕獲以及輸出比較事件時(shí)會(huì)產(chǎn)生中斷/DMA請(qǐng)求;

支持針對(duì)定位的增量(正交)編碼器和霍爾傳感器電路;

觸發(fā)輸入作為外部時(shí)鐘或者按周期的電流管理。

2.2 定時(shí)器配置步驟

定時(shí)器相關(guān)的庫(kù)函數(shù)在stm32f10x_tim,c和stm32f10x_tim.h文件中,使用庫(kù)函數(shù)對(duì)定時(shí)器進(jìn)行配置的詳細(xì)步驟如下:

使能定時(shí)器時(shí)鐘;

定時(shí)器是掛載在A(yíng)PB1總線(xiàn)上的設(shè)備,因此使能定時(shí)器可以調(diào)用函數(shù):

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIMx, ENABLE);

初始化定時(shí)器參數(shù),包含了自動(dòng)重裝值,分頻系數(shù),計(jì)數(shù)方式等;

調(diào)用函數(shù):void TIM_TimeBaseInit(TIM_TypeDef* TIMx, TIM_TimeBaseInitTypeDef* TIM_TimeBaseInitStruct);

TIM_TimeBaseInitTypeDef為一個(gè)結(jié)構(gòu)體類(lèi)型,包含了定時(shí)器初始化的成員變量:

TIM_Prescaler: 時(shí)鐘源經(jīng)過(guò)該預(yù)分頻器后輸出的是定時(shí)器時(shí)鐘,設(shè)置范圍為0~65535;

TIM_CouterMode: 可設(shè)置為T(mén)IM_CounterMode_Up(向上)、TIM_CounterMode_Down(向下)以及中心對(duì)齊計(jì)數(shù)模式;

TIM_Period:設(shè)置定時(shí)器自動(dòng)重載計(jì)數(shù)值,范圍為0~65536;

TIM_ClockDivision: 時(shí)鐘分頻因子,設(shè)置定時(shí)器時(shí)鐘CK_INT頻率與數(shù)字濾波器采樣時(shí)鐘頻率分頻比;

TIM_RepetitionCounter: 重復(fù)計(jì)數(shù)器,簡(jiǎn)單的控制PWM輸出個(gè)數(shù)。

設(shè)置定時(shí)器中斷類(lèi)型,使能定時(shí)器;

調(diào)用函數(shù):void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);

TIM_IT 用來(lái)設(shè)置定時(shí)器中斷類(lèi)型,包含TIM_IT_Update(更新中斷)、TIM_IT_Trigger(觸發(fā)中斷)以及輸入捕獲中斷等等;

FunctionalState 用來(lái)使能或使能定時(shí)器中斷,ENABLE和DISABLE。

設(shè)置定時(shí)器中斷優(yōu)先級(jí),使能定時(shí)器中斷通道;

對(duì)NVIC初始化,如前一節(jié)中所示。

開(kāi)啟定時(shí)器;

調(diào)用函數(shù):void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

編寫(xiě)定時(shí)器中斷服務(wù)函數(shù)

由于定時(shí)器中斷類(lèi)型有很多,因此在中斷服務(wù)函數(shù)中需要通過(guò)狀態(tài)寄存器的值來(lái)判斷此次中斷屬于哪一種類(lèi)型,然后再執(zhí)行相應(yīng)的用戶(hù)程序。

2.3 應(yīng)用示例

本次實(shí)驗(yàn)通過(guò)TIM4定時(shí)器的更新中斷控制LED燈實(shí)現(xiàn)不斷閃爍的功能,詳細(xì)的代碼如下所示;

time.h

time.c

main.c

對(duì)單片機(jī)感興趣的朋友可以找我,我錄制了一些關(guān)于單片機(jī)的入門(mén)教程,有需要的童鞋找我拿就像,免費(fèi)的,私信我“林老師”就可以拿~點(diǎn)擊打開(kāi)我的頭像就能領(lǐng)取

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀(guān)點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多