SysTick是Cortex-M內核自帶的一個24位定時器,所以我們可以在core_cm3.h或core_cm4.h頭文件中看到它的寄存器定義和配置函數SysTick_Config()。SysTick的功能非常簡單,僅僅提供一個時基功能,支持中斷請求,因此它的寄存器寥寥無幾。
以下是手冊上對SysTick寄存器的介紹:
CTRL為控制寄存器:
ENABLE:使能位
TICKINT: 中斷的開關,當計數溢出且TICKINT=1時SysTick將發出中斷申請。
CLKSOURCE:時鐘選擇位,CLKSOURCE=1時選擇系統時鐘,如果是M3則為72MHz,M4則為168MHz。否側選擇外部時鐘作為時鐘源。
COUNTFLAG: 溢出標志位,計數到0時置1,而且硬件自動清零。
LOAD為重載值寄存器:
當計數到0時SysTick自動將此寄存器的值加載到VAL寄存器中。注意它是24位的,所以最大值為0XFFFFFF。
VAL為當前值寄存器:
SysTick是從上往下計數的,所以此寄存器的值是遞減的。
那么,了解了SysTick的寄存器之后就可以配置它了。首先將CLKSOURCE位置1,選擇系統時鐘作為時鐘源,以M4內核為例,就是168MHz。為了讓SysTick每1us溢出一次,就須要把重載值設置為167(168-1)。當需要延時n(us)時,就將ENABLE位置1,讓SysTick開始計時,然后等待n次COUNTFLAG標志之后退出就行了。
下面是示例代碼:
#include "delay.h"
void delay_config(void)
{
SysTick->CTRL |= SysTick_CTRL_CLKSOURCE_Msk; //時鐘源為系統時鐘168MHz
SysTick->LOAD = 167; //重載值為168-1,每1us溢出一次
}
void delay_ms(vu32 nTime)
{
nTime *= 1000;
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk; //使能SysTick,開始計數
while(nTime--){
while((SysTick->CTRL&0X010000) == 0); //等待COUNTFLAG標志位置1
}
SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk); //失能SysTick,停止計數
}
void delay_us(vu32 nTime)
{
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
while(nTime--){
while((SysTick->CTRL&0X010000) == 0);
}
SysTick->CTRL &= (~SysTick_CTRL_ENABLE_Msk);
}
上一篇:第一頁
下一篇:STM32中通過普通延時函數來精確延時
推薦閱讀
史海拾趣
百事通科技(BUDDIES)自創立之初,便致力于電子技術的研發與創新。在激烈的市場競爭中,公司意識到只有掌握核心技術,才能在行業中立足。于是,公司投入大量資源,組建了一支由業內頂尖專家組成的研發團隊,專注于新型電子產品的研發。經過數年的努力,公司成功推出了一款具有自主知識產權的智能芯片,該芯片在性能上超越了同類產品,受到了市場的廣泛認可。
1991年,Cincon公司在臺灣成立,標志著其在電子行業的起步。公司創立之初,便在臺北設立了銷售辦事處,同時在彰化建立了工廠,專注于電源產品的設計與生產。創立的第二年,Cincon便開始設計和制造DC/DC轉換器和電池充電器,這為其在電源行業奠定了堅實的基礎。隨著市場需求的不斷增長,公司于1997年開始涉足交流/直流開關電源的設計與制造,進一步擴大了產品線。
隨著CIPS系統的不斷發展壯大,其在行業內的地位和影響力也逐漸提升。多家銀行和金融機構因積極運用CIPS標準收發器推動跨境人民幣業務發展而榮獲獎項,這是對CIPS系統及其運營機構的高度認可。這些榮譽和獎項不僅彰顯了CIPS在行業內的領先地位,也為其未來的發展奠定了堅實基礎。
C&H Technology成立于2005年,由兩位志同道合的電子工程師陳先生和何先生共同創立。兩位創始人憑借在半導體領域的深厚技術積累,瞄準了當時正在興起的智能手機市場,決定開發一款高性能、低功耗的手機芯片。他們租下一間小辦公室,招募了幾名志同道合的工程師,開始了艱苦的創業之旅。
起初,公司面臨資金短缺、技術瓶頸和市場認可度低等重重困難。但陳先生和何先生憑借堅定的信念和不懈的努力,逐步攻克技術難題,與供應商建立了穩定的合作關系,并通過參加行業展會等方式,逐漸提高了品牌知名度。經過幾年的努力,C&H Technology成功推出了首款手機芯片,并獲得了市場的認可。
Amphenol Nexus Technologies深知,在電子行業中,合作與共贏是實現持續發展的重要途徑。因此,公司積極與產業鏈上下游的合作伙伴建立緊密的合作關系,共同推動行業的發展。通過與供應商、客戶以及同行業企業的合作,Amphenol Nexus Technologies不斷提升自身的競爭力,實現了業務的快速增長和市場的持續擴張。
以上便是關于Amphenol Nexus公司在電子行業發展的五個故事。這些故事展示了公司在不同歷史階段的發展軌跡、領導層的智慧和決策、技術創新的努力以及合作共贏的理念。正是這些因素的共同作用,使得Amphenol Nexus Technologies能夠在激烈的市場競爭中脫穎而出,成為電子連接器行業的佼佼者。
ABI Electronics公司深知研發實力是企業發展的核心競爭力。因此,公司不斷加大對研發的投入,引進了一批高素質的研發人才,建立了完善的研發體系。通過與高校、科研機構等合作,ABI不斷吸收新的技術和知識,推動產品的升級換代,保持了在行業內的技術領先地位。
Complete Transceiver Radio module: CYRF6936 LP 2.4GHz DSSS Radio SOC Operates in the 2.4 to 2.483GHz, unlicensed frequency range (ISM ¨C ndustrial, Scienti and Medical) Transmit power up to +23dBm Receive sensitivity up to ...… 查看全部問答∨ |
這一組設計依然是同樣的創意,用字母作為電子產品的外殼形狀,RADIO造型的收音機,WLAN造型的路由器,MUSIC造型的播放器,SPEAKER造型的揚聲器… 順著這個思路,還有更多的可能性會出現。 … 查看全部問答∨ |
我們學校電子設計要做一個紅外遙控密碼鎖,關于紅外遙控模塊我不太了解,請問 1:哪種紅外發射,接收芯片用的比較多,不要太復雜的,能滿足學校的電子設計就OK 。 2:有沒有雙向的紅 ...… 查看全部問答∨ |
|
高手幫忙分析一下gprs tcp send server on recv 有原始數據 lcp_init: xmit_accm=0 0 A 0 upap_init: 0 udpInit() 0D 0D 0D 0D 0D 0D lcp_init: xmit_accm=0 0 A 0 [PPP:5] ppp_set_xaccm[0]: outACCM=0 0 A 0 [PPP:5] ppp_send_config[0]: outACCM=FF FF FF FF [PPP:5] ppp_recv_config[0]: inACCM=0 ...… 查看全部問答∨ |
|
上海祥佑數碼(Micetek)-嵌入式開發系統制造商,公司具備強大研發實力,擁有支持自主開發 51/ARM/MIPS/PowerPC CPU的仿真器及集成開發環境,公司以質優價廉產品,贏得市場廣泛認可,公司將竭 誠為廣大客戶服務。 單片機仿真器系列: - EasyPa ...… 查看全部問答∨ |
如果想在windows mobile上實現一個輸入法!具體步驟應該如何? 本輸入法已經在PC先用VC實現。 而且已經在ARM系列的試驗儀上面實現了嵌入式移植。 現在想在windows mobile上面進行移植。 望高手指點… 查看全部問答∨ |