一、SysTick【內(nèi)核中】
【風(fēng)格:先描述一下庫(kù)對(duì)寄存器的封裝,再舉例實(shí)現(xiàn)某些功能】
SysTick定時(shí)器被捆綁在NVIC中,用于產(chǎn)生SysTick異常(異常號(hào): 15)。在以前,操作系統(tǒng)還有所有使用了時(shí)基的系統(tǒng),都必須一個(gè)硬件定時(shí)器來(lái)產(chǎn)生需要的“滴答”中斷,作為整個(gè)系統(tǒng)的時(shí)基。滴答中斷對(duì)操作系統(tǒng)尤其重要。例如,操作系統(tǒng)可以為多個(gè)任務(wù)許以不同數(shù)目的時(shí)間片,確保沒(méi)有一個(gè)任務(wù)能霸占系統(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é)律。
Cortex-M3處理器內(nèi)部包含了一個(gè)簡(jiǎn)單的定時(shí)器。因?yàn)樗械腃M3芯片都帶有這個(gè)定時(shí)器,軟件在不同 CM3器件間的移植工作就得以化簡(jiǎn)。該定時(shí)器的時(shí)鐘源可以是內(nèi)部時(shí)鐘( FCLK, CM3上的自由運(yùn)行時(shí)鐘),或者是外部時(shí)鐘(CM3處理器上的STCLK信號(hào))。不過(guò), STCLK的具體來(lái)源則由芯片設(shè)計(jì)者決定,因此不同產(chǎn)品之間的時(shí)鐘頻率可能會(huì)大不相同。因此,需要檢視芯片的器件手冊(cè)來(lái)決定選擇什么作為時(shí)鐘源。SysTick定時(shí)器能產(chǎn)生中斷, CM3為它專門開(kāi)出一個(gè)異常類型,并且在向量表中有它的一席之
地。它使操作系統(tǒng)和其它系統(tǒng)軟件在CM3器件間的移植變得簡(jiǎn)單多了,因?yàn)樵谒蠧M3產(chǎn)品間,SysTick的處理方式都是相同的。
2、工作流程
SysTick 是一個(gè) 24 位的定時(shí)器, 即一次最多可以計(jì)數(shù) 224 個(gè)時(shí)鐘脈沖,這 個(gè)脈沖計(jì)數(shù)值被保存到 當(dāng)前計(jì)數(shù)值寄存器 STK_VAL中,只能向下計(jì)數(shù),每接收到一個(gè)時(shí)鐘脈沖 STK_VAL 的值就向下減1,直至 0,當(dāng) STK_VAL 的值被減至 0 時(shí),由硬件自動(dòng)把重載寄存器STK_LOAD中保存的數(shù)據(jù)加載到 STK_VAL,重新向下計(jì)數(shù)。當(dāng) STK_VAL 的值被計(jì)數(shù)至 0 時(shí),觸發(fā)異常,就可以在中斷服務(wù)函 數(shù)中處理定時(shí)事件了。
三、10us定時(shí)器
所謂的定時(shí)器中斷就是指定時(shí)多長(zhǎng)時(shí)間中斷觸發(fā)一次,此例中10us產(chǎn)生一次中斷。
#include "SysTick.h"
static __IO u32 delay_time;
void SysTickInit(void)
{
/* SystemFrequency / 1000 1ms中斷一次
* SystemFrequency / 100000 10us中斷一次
* SystemFrequency / 1000000 1us中斷一次
*/
/* SysTick_Config()內(nèi)核層core_cm3.h 中
這個(gè)函數(shù)啟動(dòng)了 SysTick timer;并把它配置為計(jì)數(shù)至 0 時(shí)引起中斷;輸入的參數(shù) ticks 為兩個(gè)中斷之間的脈沖數(shù),
即相隔ticks 個(gè)時(shí)鐘周期會(huì)引起一次中斷;配置 SysTick 成功時(shí)返回 0,出錯(cuò)進(jìn)返回 1。
*/
if (SysTick_Config(SystemCoreClock / 100000))
{
while (1);
}
// 關(guān)閉滴答定時(shí)器
SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
}
// 所以總的延時(shí)時(shí)間 T 延時(shí)= T 中斷周期 * time
void DelayUs(__IO u32 time)
{
delay_time = time;
// 使能滴答定時(shí)器
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(count != 0);
}
//在 SysTick 中斷函數(shù) SysTick_Handler()調(diào)用
void SysTickInterrupt(void)
{
if (delay_time != 0x00)
{
delay_time--;
}
}
// 中斷程序在 stm32f10x_it.c 中實(shí)現(xiàn):
void SysTick_Handler(void)
{
SysTickInterrupt();
}
上一篇:在stm32的freeRTOS上進(jìn)行微秒級(jí)延時(shí)
下一篇:STM32CubeMX之定時(shí)器控制微秒延時(shí)詳解
推薦閱讀
史海拾趣
作為一家高科技企業(yè),BCD Semi(Diodes)公司深知?jiǎng)?chuàng)新是發(fā)展的核心動(dòng)力。因此,公司始終將研發(fā)投入作為重中之重,不斷加大對(duì)新技術(shù)、新產(chǎn)品的研發(fā)力度。通過(guò)持續(xù)的創(chuàng)新驅(qū)動(dòng),公司成功推出了一系列具有自主知識(shí)產(chǎn)權(quán)的高性能模擬半導(dǎo)體產(chǎn)品,為公司的長(zhǎng)遠(yuǎn)發(fā)展奠定了堅(jiān)實(shí)基礎(chǔ)。
除了在歐洲和中國(guó)市場(chǎng)取得顯著成就外,Brand-Rex還積極拓展全球市場(chǎng)。其亞太區(qū)總部設(shè)在澳大利亞墨爾本市,大中國(guó)區(qū)辦事處分別設(shè)在北京、上海及香港,東南亞辦事處設(shè)在新加坡。這些布局使得Brand-Rex能夠更好地服務(wù)全球客戶,滿足不同地區(qū)的市場(chǎng)需求。同時(shí),Brand-Rex還積極尋求與全球知名企業(yè)的合作機(jī)會(huì),通過(guò)戰(zhàn)略合作和技術(shù)交流不斷提升自身的競(jìng)爭(zhēng)力和創(chuàng)新能力。
綜上所述,Brand-Rex在電子行業(yè)中的發(fā)展是一個(gè)充滿挑戰(zhàn)和機(jī)遇的過(guò)程。憑借其卓越的技術(shù)、優(yōu)質(zhì)的產(chǎn)品和全球市場(chǎng)的布局,Brand-Rex不斷壯大并成為行業(yè)內(nèi)的佼佼者。未來(lái),隨著全球電子行業(yè)的不斷發(fā)展,Brand-Rex有望繼續(xù)保持其領(lǐng)先地位,并為全球客戶提供更加優(yōu)質(zhì)的產(chǎn)品和服務(wù)。
Brand-Rex一直致力于技術(shù)創(chuàng)新和產(chǎn)品研發(fā)。其專利銅線絞合技術(shù)大大改善了結(jié)構(gòu)回路損耗,降低了衰減;同時(shí),利用電纜內(nèi)十字截面塑膠隔離層把四組雙絞線分隔開(kāi),減少了近端串?dāng)_。這些技術(shù)創(chuàng)新不僅提升了產(chǎn)品的性能和質(zhì)量,還使Brand-Rex在行業(yè)中樹立了技術(shù)領(lǐng)先的形象。此外,Brand-Rex還積極參與國(guó)際標(biāo)準(zhǔn)的制定和推廣工作,為全球布線行業(yè)的發(fā)展做出了重要貢獻(xiàn)。
Elec公司成立于20世紀(jì)初,最初只是一家小型電子元件生產(chǎn)商。創(chuàng)始人李明(化名)對(duì)電子技術(shù)有著深厚的興趣和獨(dú)到的見(jiàn)解。在他的帶領(lǐng)下,Elec公司逐步研發(fā)出具有競(jìng)爭(zhēng)力的電阻、電容等基礎(chǔ)元件,并逐漸在市場(chǎng)中嶄露頭角。隨著電子技術(shù)的不斷發(fā)展,Elec公司敏銳地捕捉到半導(dǎo)體技術(shù)的潛力,開(kāi)始投入巨資研發(fā)。經(jīng)過(guò)數(shù)年的努力,Elec公司成功研發(fā)出具有自主知識(shí)產(chǎn)權(quán)的半導(dǎo)體芯片,這一突破讓Elec公司在電子行業(yè)中聲名鵲起。
GSME Electronics的起點(diǎn)可以追溯到2001年,當(dāng)時(shí)公司在廣西桂林市成立,作為桂林國(guó)家高新區(qū)的高新技術(shù)企業(yè)。初期,公司面臨著技術(shù)設(shè)備落后的挑戰(zhàn),但管理層高瞻遠(yuǎn)矚,決定從日本、韓國(guó)、歐美等國(guó)家引進(jìn)具有國(guó)際先進(jìn)水平的自動(dòng)化生產(chǎn)設(shè)備。這一決策為公司后續(xù)的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ),使得公司能夠快速進(jìn)入半導(dǎo)體器件的生產(chǎn)領(lǐng)域,并不斷提升產(chǎn)品質(zhì)量和生產(chǎn)效率。
華為,作為中國(guó)的科技巨頭,其在電子行業(yè)的發(fā)展歷程中展現(xiàn)出了強(qiáng)大的技術(shù)實(shí)力和全球視野。華為在通信領(lǐng)域取得了多項(xiàng)技術(shù)突破,如5G技術(shù)的領(lǐng)先和智能手機(jī)拍照技術(shù)的創(chuàng)新。同時(shí),華為還積極拓展全球市場(chǎng),與全球運(yùn)營(yíng)商建立了廣泛的合作關(guān)系。然而,面對(duì)國(guó)際市場(chǎng)的復(fù)雜環(huán)境和競(jìng)爭(zhēng)壓力,華為也面臨著諸多挑戰(zhàn)和不確定性。
小且精彩的迷你本:採(cǎi)用NVIDIA Tegra 600MHz處理器 Mobinnova展示「Elan」Netbook Mobinnova 「 Elan 」 Netbook 外觀設(shè)計(jì)時(shí)尚 支援 HDMI 、 DVI 及 D-Sub 輸出 可升高機(jī)身設(shè)計(jì)令使用更方便 內(nèi)建 Firefox 瀏覽器使用與一般 PC 無(wú)異 支援 720p HD 硬體解碼 NVIDIA 上週五邀 ...… 查看全部問(wèn)答∨ |
|
上拉電阻和下拉電阻的選擇應(yīng)結(jié)合開(kāi)關(guān)管特性和下級(jí)電路的輸入特性進(jìn)行設(shè)定,主要需要考慮以下幾個(gè)因素:1. 驅(qū)動(dòng)能力與功耗的平衡。以上拉電阻為例,一般地說(shuō),上拉電阻越小,驅(qū)動(dòng)能力越強(qiáng),但功耗越大,設(shè)計(jì)是應(yīng)注意兩者之間的均衡。2. 下級(jí)電路的 ...… 查看全部問(wèn)答∨ |
問(wèn)題一: 如下是服務(wù)器端的部分程序,accept成功后,客戶端給服務(wù)器端發(fā)送兩次消息,分別為\"01\",\"02\". 發(fā)現(xiàn):如果把szText[]的大小改為3,則只能成功接受一次數(shù)據(jù),改成16就能接受兩次。 ...… 查看全部問(wèn)答∨ |
初學(xué)Windows驅(qū)動(dòng)開(kāi)發(fā), 請(qǐng)推薦些資料和書籍, 謝謝! 初學(xué)Windows驅(qū)動(dòng)開(kāi)發(fā), 主要是做網(wǎng)絡(luò)方面的, 比如數(shù)據(jù)報(bào)的抓包、發(fā)包之類。 請(qǐng)推薦些資料和書籍, 謝謝!… 查看全部問(wèn)答∨ |
驅(qū)動(dòng)中等待多個(gè)事件的問(wèn)題 各位好~ 有個(gè)問(wèn)題想跟大家討論下: 在CE下,驅(qū)動(dòng)中能否使用WaitForMultipleObjects來(lái)等待多個(gè)中斷事件? 前些天記得有個(gè)帖子說(shuō)過(guò),驅(qū)動(dòng)中不能用WaitForMultipleObjects來(lái)等待多個(gè)事件,實(shí)際上我也試了下,沒(méi)有成功,情況是這樣的: 1.用兩個(gè)IR ...… 查看全部問(wèn)答∨ |
畢業(yè)設(shè)計(jì) 基于DSP的SPWM技術(shù)實(shí)現(xiàn) 緊急求助專家?guī)兔?。本人大四畢業(yè)設(shè)計(jì),做DSP的SPWM技術(shù)實(shí)現(xiàn)。用的是2407的芯片,要求仿真出波形圖,并且還要進(jìn)行算法的計(jì)算和改進(jìn),提出優(yōu)化,對(duì)誤差進(jìn)行分析,并對(duì)死區(qū)控制進(jìn)行分析。 本人現(xiàn)在急求 2407的SPWM C語(yǔ)言的程序,并且最好給張仿真的波 ...… 查看全部問(wèn)答∨ |
求助 :Compact Framework中播放mp3等音頻文件… 在Compact Framework中除了調(diào)用media player控件 還有其它什么播放音頻文件的方法嗎??… 查看全部問(wèn)答∨ |
誰(shuí)有LM3S8962的SD讀寫程序,發(fā)上來(lái)個(gè)研究一下 誰(shuí)有LM3S8962的SD讀寫程序,發(fā)上來(lái)個(gè)研究一下我這邊的stellarisware光盤里面的SD卡程序用不了,誰(shuí)有個(gè)能用的,給個(gè)!謝謝… 查看全部問(wèn)答∨ |
現(xiàn)在學(xué)習(xí)C,是自己買了本譚浩強(qiáng)的C語(yǔ)言程序設(shè)計(jì)自己在家邊看邊用電腦寫寫,發(fā)現(xiàn)在看書看了幾次能看明白了,再做后面的練習(xí)又不會(huì)了,不知道怎么下手,看了答案才知道原來(lái)是這樣的怎么辦?越看越?jīng)]有信心了,尤其是指針,就感覺(jué)我拿到問(wèn)題不知道怎么 ...… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- Alif 大幅增強(qiáng)邊緣 AI 處理器性能
- VS Code+PlatformIO搭建ESP32 Arduino開(kāi)發(fā)環(huán)境
- ESP32學(xué)習(xí)筆記(49)——RFID RC522使用
- Esp32環(huán)境離線搭建參考
- ESP32使用舵機(jī)庫(kù)時(shí)的錯(cuò)誤
- ESP32 S3接ST7789屏幕線序
- Arduino IDE安裝ESP32開(kāi)發(fā)環(huán)境的最簡(jiǎn)單方法
- 基于S3C44B0X和μC/OS-Ⅱ智能家居嵌入式系統(tǒng)設(shè)計(jì)
- 8位還能打,新唐推出全新工業(yè)級(jí)MCU
- 半導(dǎo)體關(guān)稅可能會(huì)使您的下一輛汽車更加昂貴
- 潮起!人形機(jī)器人成本的20%-30%——靈巧手,國(guó)產(chǎn)3大廠商正快速產(chǎn)業(yè)化!
- AB Dynamics發(fā)布用于無(wú)人駕駛測(cè)試的物體檢測(cè)系統(tǒng)
- AI重構(gòu)出行:高階輔助駕駛的破局之路
- 廣汽即將發(fā)布全新星源增程技術(shù)
- Yole表示,到2030年,數(shù)據(jù)中心芯片市場(chǎng)規(guī)模將達(dá)到5000億美元
- 綠色節(jié)能趨勢(shì)下的延時(shí)繼電器發(fā)展:低功耗設(shè)計(jì)與環(huán)保材料應(yīng)用
- 國(guó)內(nèi)車企在固態(tài)電池領(lǐng)域的挑戰(zhàn)和技術(shù)方案
- 資本熱捧 + 政策護(hù)航,2025 人形機(jī)器人能否叩開(kāi) “量產(chǎn)元年” 大門?
- 耐世特推出用于智能運(yùn)動(dòng)控制的 MotionIQ?軟件套件
- STM32 DTH11溫濕度模塊讀寫代碼
- STM32之SHT30溫濕度傳感器驅(qū)動(dòng)代碼
- STM32-DHT11(溫濕度傳感器)之學(xué)習(xí)筆記
- ADIS16203角度傳感器的stm32驅(qū)動(dòng)實(shí)現(xiàn)要點(diǎn)
- 關(guān)于stm32的spi發(fā)送命令時(shí)的注意事項(xiàng)
- Intel董事變動(dòng),馬爾·伊什拉克走馬上任
- 工業(yè)機(jī)器人的概念及其產(chǎn)業(yè)鏈分析
- 淺談移動(dòng)機(jī)器人的幾大關(guān)鍵性技術(shù)
- 機(jī)器人末端的夾持機(jī)構(gòu)要結(jié)合實(shí)際工作環(huán)境來(lái)設(shè)計(jì)
- 水下機(jī)器人想要發(fā)展的關(guān)鍵是什么
- 尋做考勤機(jī)系統(tǒng)的哥們
- 匯編高手進(jìn)@?。?/span>
- CAN底層波形輸出
- 430F1491
- 說(shuō)功率因數(shù)(Power Factor)(轉(zhuǎn))
- 用EVC程序調(diào)試時(shí)顯示“Cannotlaunch the remote executable. Error:操作成功完成。Win32 error code:12
- 關(guān)于MC9S12GMLL芯片寫的RAM、ROM自檢函數(shù)
- 開(kāi)個(gè)關(guān)于ADI實(shí)驗(yàn)室電路的討論帖
- 監(jiān)控資料,有法律效力么?
- 請(qǐng)大家解答遙控解碼程序利用寄存器設(shè)置9MS引導(dǎo)碼和4.5MS結(jié)果碼的檢測(cè)方法