国产精品久久久久影院,成人午夜福利视频,国产精品久久久久高潮,国产精品 欧美 亚洲 制服,国产精品白浆无码流出

歷史上的今天

今天是:2024年10月18日(星期五)

正在發(fā)生

2021年10月18日 | stm32專題九:SysTick(一)系統(tǒng)嘀嗒定時(shí)器原理

發(fā)布者:悅耳旋律 來源: eefocus關(guān)鍵字:stm3  SysTick 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

SysTick是存在于stm32內(nèi)核的定時(shí)器,嵌套在NVIC中,24位,只能遞減。在stm32中文參考手冊(cè)中,對(duì)于SysTick的描述其實(shí)很少,主要如下。systick的時(shí)鐘可以為AHB時(shí)鐘,或者是AHB時(shí)鐘8分頻=9M。而校準(zhǔn)值固定為9000,也就是說,當(dāng)時(shí)鐘頻率為9M時(shí),9000的固定值對(duì)應(yīng)1ms時(shí)間基準(zhǔn),9000 000對(duì)應(yīng)1s時(shí)間。

在core-CM3編程手冊(cè)中,有配置systick的寄存器描述。

SysTick控制和狀態(tài)寄存器STK_CTRL

位描述:


COUNTFLAG:如果上一次計(jì)數(shù)到0,則返回1,為計(jì)數(shù)標(biāo)志。


CLKSOURCE:選擇時(shí)鐘源,為0時(shí)即為AHB時(shí)鐘8分頻,為1時(shí)直接就等于AHB總線時(shí)鐘。


TICKINT:SysTick異常請(qǐng)求使能,該位為1則計(jì)數(shù)值減到0時(shí)發(fā)起系統(tǒng)異常請(qǐng)求,為0時(shí)不響應(yīng)。


ENABLE:該位為1時(shí),計(jì)數(shù)值從重裝載值寄存器開始往下遞減,當(dāng)減到0,會(huì)設(shè)置COUNTFLAG標(biāo)志位為1,并根據(jù)TICKINT的值來選擇是否發(fā)起系統(tǒng)異常請(qǐng)求,然后重新裝初始值,開始計(jì)數(shù)。


STK_LOAD重裝載值寄存器,設(shè)置計(jì)數(shù)初值。值得注意的是,SysTick是減到0,一次完整的計(jì)數(shù)過程是0 - 99 - 98 -... -0共100個(gè)數(shù),這是循環(huán)計(jì)數(shù)過程。因此,如果我們希望的計(jì)數(shù)值為N,實(shí)際上要寫入到LOAD寄存器的值必須為N-1,這個(gè)非常重要。

另外,如果是希望計(jì)數(shù)只觸發(fā)一次,則填入的值還是N,因?yàn)樯倭艘粋€(gè)0-N的一次記數(shù),這些都有寄存器描述,最常用的循環(huán)計(jì)數(shù)還是初始值為N-1

還有一個(gè)當(dāng)前計(jì)數(shù)值寄存器,該寄存器一旦寫入就會(huì)將當(dāng)前寄存器的所有位清零,并還會(huì)把CPUNTFLAG標(biāo)志位清0,所以我們不要鬼這個(gè)寄存器進(jìn)行寫入操作。

野火給出的框圖如下,也是在說明上述意義。

SysTick定時(shí)時(shí)間的計(jì)算:


時(shí)間t   單詞執(zhí)行的時(shí)間,和reload CLK有關(guān);

CLK  9M或72M,由CTRL寄存器配置;

reload值,24位,用戶配置;

所以就有下面的配置:


t = reload * (1 / CLK)


CLK = 72M時(shí),t = (72) * (1 / 72M) = 1us,此時(shí)reload = 72


CLK = 72M時(shí),t = (72000) * (1 / 72M) = 1ms,此時(shí)reload = 72000


注意,這是單次計(jì)數(shù),所以reload = N,就是從N到0,實(shí)際上計(jì)數(shù)N次。而循環(huán)計(jì)數(shù)時(shí),reload要設(shè)置為N-1,因?yàn)閺腘-1到0計(jì)數(shù)N-1次,再從0到N-1計(jì)數(shù)一次,這才是一個(gè)完整的循環(huán)周期。


如果產(chǎn)生中斷的延時(shí)是微妙級(jí)別,那么系統(tǒng)會(huì)頻繁的進(jìn)入中斷,很多事情就做不了了,與系統(tǒng)的時(shí)間相沖突,因此意義不大,通常使用的中斷都是ms級(jí)別。


標(biāo)準(zhǔn)固件庫中對(duì)SysTick有非常詳細(xì)的描述


這個(gè)時(shí)初始化結(jié)構(gòu)體


typedef struct

{

  __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */

  __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */

  __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */

  __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */

} SysTick_Type;

然后看系統(tǒng)默認(rèn)對(duì)SysTick的配置,這里有幾個(gè)值得注意的地方,1 輸入嘀嗒數(shù)不能超過2^24;2 嘀嗒數(shù)就是要定時(shí)的數(shù)N,因?yàn)?a href="http://m.womende.cn/zhuanti/rfXrzD" style="color:#4595e6;" target="_blank">代碼里自動(dòng)實(shí)現(xiàn)了N-1;默認(rèn)將時(shí)鐘配置為AHB時(shí)鐘72M;默認(rèn)中斷優(yōu)先級(jí)位最低優(yōu)先級(jí)15。


/**

 * @brief  Initialize and start the SysTick counter and its interrupt.

 *

 * @param   ticks   number of ticks between two interrupts

 * @return  1 = failed, 0 = successful

 *

 * Initialise the system tick timer and its interrupt and start the

 * system tick timer / counter in free running mode to generate 

 * periodical interrupts.

 */

static __INLINE uint32_t SysTick_Config(uint32_t ticks)

  if (ticks > SysTick_LOAD_RELOAD_Msk)  return (1);            /* Reload value impossible */

                                                               

  SysTick->LOAD  = (ticks & SysTick_LOAD_RELOAD_Msk) - 1;      /* set reload register */

  // 設(shè)置SysTick 中斷優(yōu)先級(jí),默認(rèn)為最低的優(yōu)先級(jí)(1 << 4) - 1 = 16 - 1 = 15

  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Cortex-M0 System Interrupts */

  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */

  // 這里的SysTick_CTRL_CLKSOURCE_Msk = 1 << 2,默認(rèn)會(huì)將時(shí)鐘配置為AHB時(shí)鐘源72M

  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk | 

                   SysTick_CTRL_TICKINT_Msk   | 

                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */

  return (0);                                                  /* Function successful */

}


固件庫設(shè)置中斷優(yōu)先級(jí)的標(biāo)準(zhǔn)函數(shù),首先判斷中斷標(biāo)號(hào)<0(內(nèi)核)還是>=0(外設(shè)),如果是外設(shè)的中斷非常簡(jiǎn)單,直接設(shè)置IP寄存器的高4位(priority << 4),如果是內(nèi)核的中斷,不是設(shè)置NVIC_IP寄存器,而是設(shè)置SCB_SHPR寄存器。

/**

 * @brief  Set the priority for an interrupt

 *

 * @param  IRQn      The number of the interrupt for set priority

 * @param  priority  The priority to set

 *

 * Set the priority for the specified interrupt. The interrupt 

 * number can be positive to specify an external (device specific) 

 * interrupt, or negative to specify an internal (core) interrupt.

 *

 * Note: The priority cannot be set for every core interrupt.

 */

static __INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)

{

  if(IRQn < 0) {

    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M3 System Interrupts */

  else {

    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */

}


當(dāng)SysTick和外設(shè)同時(shí)產(chǎn)生中斷時(shí),根據(jù)4位數(shù)的數(shù)值大小來解析中斷優(yōu)先級(jí)的高低。

關(guān)鍵字:stm3  SysTick 引用地址:stm32專題九:SysTick(一)系統(tǒng)嘀嗒定時(shí)器原理

上一篇:stm32時(shí)鐘樹以及修改系統(tǒng)時(shí)鐘頻率
下一篇:stm32專題一:GPIO輸出—點(diǎn)亮LED

推薦閱讀

人工智能(AI)現(xiàn)在有了一種全新的用途:用來預(yù)測(cè)地震和海嘯。東京首都大學(xué)的一個(gè)團(tuán)隊(duì)使用機(jī)器學(xué)習(xí)技術(shù)來分析地磁場(chǎng)的微小變化,和現(xiàn)有方法相比,他們創(chuàng)建的系統(tǒng)有望更早地預(yù)測(cè)到自然災(zāi)害的發(fā)生。“地震和海嘯伴隨著地磁場(chǎng)的局部變化,”該副教授Kan Okubo領(lǐng)導(dǎo)的研究人員寫道。“對(duì)于地震來說,這主要是一種壓磁效應(yīng),沿著斷層釋放累積的大量應(yīng)力,會(huì)引起...
在臨港新片區(qū)揭牌兩個(gè)月之際,臨港新片區(qū)管委會(huì)發(fā)布了促進(jìn)產(chǎn)業(yè)發(fā)展若干政策和集聚發(fā)展集成電路、人工智能、生物醫(yī)藥和航空航天四大重點(diǎn)產(chǎn)業(yè)的若干支持措施(簡(jiǎn)稱“1+4”產(chǎn)業(yè)政策),著力提升科技創(chuàng)新和產(chǎn)業(yè)融合能力,整體提升區(qū)域產(chǎn)業(yè)能級(jí),打造以關(guān)鍵核心技術(shù)為突破口的世界級(jí)前沿產(chǎn)業(yè)集群,加快推進(jìn)建成具有國際市場(chǎng)競(jìng)爭(zhēng)力的開放型產(chǎn)業(yè)體系。 此間官方表...
蘋果周三正式發(fā)布了 iPhone 12 系列 5G 新品,包括 iPhone 12 mini、iPhone 12、iPhone 12 Pro 與 iPhone 12 Pro Max?! ∑渲?,iPhone 12 與 iPhone 12 Pro 將于今晚 8 點(diǎn)開始預(yù)購,10 月 23 日發(fā)售。價(jià)格分別為:iPhone 12:64GB 版售價(jià) 6299 元,128GB 版售價(jià) 6799 元,256GB 版售價(jià) 7599 元。iPhone 12 ...
激光制造技術(shù)是結(jié)合光學(xué)、機(jī)械、電子電機(jī)、計(jì)算機(jī)等科學(xué)與技術(shù)整合成的一項(xiàng)新技術(shù),其已在現(xiàn)今社會(huì)中被廣泛的應(yīng)用。根據(jù)國際激光產(chǎn)業(yè)權(quán)威《LASER FOCUS WORLD》與《Industrial Laser Solution》于2013年初統(tǒng)計(jì)數(shù)據(jù)顯示,全球激光產(chǎn)品銷售已經(jīng)回到2008年的水平并呈現(xiàn)增長(zhǎng)的趨勢(shì)。在全球激光材料加工領(lǐng)域中,近幾年以金屬加工的產(chǎn)值占多數(shù),應(yīng)用端又以激...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved