STM32菜鳥(niǎo)成長(zhǎng)記錄---系統(tǒng)滴答定時(shí)器(systick)應(yīng)用資料下載
2021-04-16 |
pdf |
596.99KB |
次下載 |
2積分
資料介紹
1.systick介紹Systick就是一個(gè)定時(shí)器而已,只是它放在了NVIC中,主要的目的是為了給操作系統(tǒng)提供一個(gè)硬件上的中斷(號(hào)稱(chēng)滴答中斷)。滴答中斷?這里來(lái)簡(jiǎn)單地解釋一下。操作系統(tǒng)進(jìn)行運(yùn)轉(zhuǎn)的時(shí)候,也會(huì)有“心跳”。它會(huì)根據(jù)“心跳”的節(jié)拍來(lái)工作,把整個(gè)時(shí)間段分成很多小小的時(shí)間片,每個(gè)任務(wù)每次只能運(yùn)行一個(gè)“時(shí)間片”的時(shí)間長(zhǎng)度就得退出給別的任務(wù)運(yùn)行,這樣可以確保任何一個(gè)任務(wù)都不會(huì)霸占整個(gè)系統(tǒng)不放?;蛘甙衙總€(gè)定時(shí)器周期的某個(gè)時(shí)間范圍賜予特定的任務(wù)等,還有操作系統(tǒng)提供的各種定時(shí)功能,都與這個(gè)滴答定時(shí)器有關(guān)。因此,需要一個(gè)定時(shí)器來(lái)產(chǎn)生周期性的中斷,而且最好還讓用戶程序不能隨意訪問(wèn)它的寄存器,以維持操作系統(tǒng)“心跳”的節(jié)律。只要不把它在SysTick控制及狀態(tài)寄存器中的使能位清除,就永不停息。知道systick在系統(tǒng)中的地位后,我們來(lái)了解systick的實(shí)現(xiàn)。這里只是舉例說(shuō)明systick的使用。它有四個(gè)寄存器,筆者把它列出來(lái):SysTick->CTRL, --控制和狀態(tài)寄存器SysTick->LOAD, --重裝載寄存器SysTick->VAL, --當(dāng)前值寄存器SysTick->CALIB, --校準(zhǔn)值寄存器下圖有他們的分別描述:下圖引用地址:http://blog.csdn.net/marike1314/article/details/56736842.systick編程現(xiàn)在我們想通過(guò)Systick定時(shí)器做一個(gè)精確的延遲函數(shù),比如讓LED精確延遲1秒鐘閃亮一次。思路:利用systick定時(shí)器為遞減計(jì)數(shù)器,設(shè)定初值并使能它后,它會(huì)每個(gè)1系統(tǒng)時(shí)鐘周期計(jì)數(shù)器減,計(jì)數(shù)到0時(shí),SysTick計(jì)數(shù)器自動(dòng)重裝初值并繼續(xù)計(jì)數(shù),同時(shí)觸發(fā)中斷。那么每次計(jì)數(shù)器減到0,時(shí)間經(jīng)過(guò)了:系統(tǒng)時(shí)鐘周期*計(jì)數(shù)器初值。我們使用72M作為系統(tǒng)時(shí)鐘,那么每次計(jì)數(shù)器減1所用的時(shí)間是1/72M,計(jì)數(shù)器的初值如果是72000,那么每次計(jì)數(shù)器???到0,時(shí)間經(jīng)過(guò)(1/72M)*72000= 0.001,即1ms。(簡(jiǎn)單理解:用72M的時(shí)鐘頻率,即1s計(jì)數(shù)72M=72000000次,那1ms計(jì)數(shù)72000次,所以計(jì)數(shù)值為72000)首先,我們需要有一個(gè)72M的systick系統(tǒng)時(shí)鐘,那么,使用下面這個(gè)時(shí)鐘OK就!SystemInit();這個(gè)函數(shù)可以讓主頻運(yùn)行到72M??梢园阉鳛閟ystick的時(shí)鐘源。接著開(kāi)始配置systick,實(shí)際上配置systick的嚴(yán)格過(guò)程如下:1、調(diào)用SysTick_CounterCmd() --失能SysTick計(jì)數(shù)器2、調(diào)用SysTick_ITConfig() --失能SysTick中斷3、調(diào)用SysTick_CLKSourceConfig() --設(shè)置SysTick時(shí)鐘源。4、調(diào)用SysTick_SetReload() --設(shè)置SysTick重裝載值。5、調(diào)用SysTick_ITConfig() --使能SysTick中斷6、調(diào)用SysTick_CounterCmd() --開(kāi)啟SysTick計(jì)數(shù)器這里大家一定要注意,必須使得當(dāng)前寄存器的值VAL等于0!SysTick->VAL = (0x00);只有當(dāng)VAL值為0時(shí),計(jì)數(shù)器自動(dòng)重載RELOAD。接下來(lái)就可以直接調(diào)用Delay();函數(shù)進(jìn)行延遲了。延遲函數(shù)的實(shí)現(xiàn)中,要注意的是,全局變量TimingDelay必須使用volatile,否則可能會(huì)被編譯器優(yōu)化。下面我們來(lái)做一下程序分析:(1)系統(tǒng)時(shí)鐘進(jìn)配置首先我們對(duì)系統(tǒng)時(shí)鐘進(jìn)行了配置并且SetSysClock(void)函數(shù)使用72M作為系統(tǒng)時(shí)鐘;為了方面看清代碼我選擇截圖:(2)先來(lái)看看主函數(shù)(3)系統(tǒng)滴答定時(shí)器的配置--主角登場(chǎng):主函數(shù)中:SysTick_Config(72000) ;滴答定時(shí)器的參數(shù)是72000即計(jì)數(shù)72000(因?yàn)槲覀兪褂?2M的時(shí)鐘頻率,即1s計(jì)數(shù)72M=72000000次,那1ms計(jì)數(shù)72000次,所以計(jì)數(shù)值為72000)在文件Core_cm3.h中SysTick_Config函數(shù)的具體實(shí)現(xiàn)如下:我們來(lái)看一下這句代碼:SysTick->CTRL = (1 << SYSTICK_CLKSOURCE) | (1<CLKSOURCE(控制寄存器)。設(shè)置重載值(RELOAD寄存器),清空計(jì)數(shù)寄存器VAL(就是下圖的CURRENT)。置CTRL->ENABLE位開(kāi)始計(jì)時(shí)。如果是中斷則允許Systick中斷,在中斷例程中處理。如采用查詢模式則不斷讀取控制寄存器的COUNTFLAG標(biāo)志位,判斷是否計(jì)時(shí)至零?;蛘卟扇∠铝幸环N方法當(dāng)SysTick定時(shí)器從1計(jì)到0時(shí),它將把COUNTFLAG位置位;而下述方法可以清零之:1.讀取SysTick控制及狀態(tài)寄存器(STCSR)2.往SysTick當(dāng)前值寄存器(STCVR)中寫(xiě)任何數(shù)據(jù)只有當(dāng)VAL值為0時(shí),計(jì)數(shù)器自動(dòng)重載RELOAD。Q:如何使用SysTicks作為系統(tǒng)時(shí)鐘?SysTick的最大使命,就是定期地產(chǎn)生異常請(qǐng)求,作為系統(tǒng)的時(shí)基。OS都需要這種“滴答”來(lái)推動(dòng)任務(wù)和時(shí)間的管理。如欲使能SysTick異常,則把STCSR.TICKINT置位。另外,如果向量表被重定位到SRAM中,還需要為SysTick異常建立向量,提供其服務(wù)例程的入口地址。(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- 【STM32】SysTick滴答定時(shí)器(delay延時(shí)函數(shù)講解)
- STM32學(xué)習(xí)心得九:Systick滴答定時(shí)器和延時(shí)函數(shù)解讀
- 初學(xué)stm32-Systick滴答時(shí)鐘定時(shí)
- [學(xué)習(xí)筆記](méi)STM32F1 SYSTICK 滴答定時(shí)器(寄存器、標(biāo)準(zhǔn)庫(kù)、HAL庫(kù))
- STM32筆記(七)---Systick系統(tǒng)定時(shí)器
- STM32學(xué)習(xí)筆記(5)——系統(tǒng)定時(shí)器SysTick
- Stm32入門(mén)——Systick定時(shí)器
- SysTick 定時(shí)器
- STM32F4: Systick滴答定時(shí)器-延時(shí)函數(shù)講解(五)
- STM32入門(mén)(十五)----SysTick系統(tǒng)定時(shí)器
- 利用systick實(shí)現(xiàn)1s定時(shí)
- STM32 Systick系統(tǒng)定時(shí)器
- stm32的systick(滴答定時(shí)器)實(shí)現(xiàn)精準(zhǔn)延時(shí)
- 什么是SysTick定時(shí)器?實(shí)現(xiàn)STM32時(shí)鐘系統(tǒng)的詳細(xì)資料說(shuō)明 3次下載
- SysTick定時(shí)器的用法詳細(xì)中文資料概述 9次下載
- STM32的通用定時(shí)器 3526次閱讀
- STM32F407入門(mén)開(kāi)發(fā): 滴答定時(shí)器配置 4214次閱讀
- SysTick定時(shí)器介紹,SysTick定時(shí)器寄存器 1.8w次閱讀
- STM32定時(shí)器基本計(jì)數(shù)原理解析 1.8w次閱讀
- STM32單片機(jī)SysTick系統(tǒng)滴答功能解析 6049次閱讀
- STM32單片機(jī)對(duì)Systick心跳定時(shí)器的設(shè)計(jì) 4195次閱讀
- STM32單片機(jī)的SYSTick定時(shí)器的設(shè)置 3876次閱讀
- SysTick定時(shí)器實(shí)現(xiàn)走馬燈的功能 2781次閱讀
- STM32單片機(jī)的系統(tǒng)定時(shí)器初始化設(shè)置 8140次閱讀
- 基于STM32定時(shí)器實(shí)現(xiàn)毫秒延時(shí)函數(shù) 2.5w次閱讀
- STM32知識(shí):什么是SYSTICK 作用是什么 5w次閱讀
- STM32-基本定時(shí)器TIM6-TIM7基本定時(shí)功能 1.1w次閱讀
- stm32f103zet6定時(shí)器詳解及應(yīng)用 2.4w次閱讀
- stm32定時(shí)器輸入捕獲 2.3w次閱讀
- stm32定時(shí)器中斷程序 1.3w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1491次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 95次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說(shuō)明
- 4.28 MB | 18次下載 | 4 積分
- 5開(kāi)關(guān)電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費(fèi)
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于單片機(jī)和 SG3525的程控開(kāi)關(guān)電源設(shè)計(jì)
- 0.23 MB | 4次下載 | 免費(fèi)
- 8基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專(zhuān)業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537793次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論
查看更多