先上代碼,這是 core_cm3.h 中關(guān)于 SysTick 寄存器的一些定義。
/*
SysTick Control / Status Register Definitions
*/
#define
SysTick_CTRL_COUNTFLAG_Pos 16 /*!< SysTick CTRL: COUNTFLAG Position */
#define
SysTick_CTRL_COUNTFLAG_Msk (1ul << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
#define
SysTick_CTRL_CLKSOURCE_Pos 2 /*!< SysTick CTRL: CLKSOURCE Position */
#define
SysTick_CTRL_CLKSOURCE_Msk (1ul << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
#define
SysTick_CTRL_TICKINT_Pos 1 /*!< SysTick CTRL: TICKINT Position */
#define
SysTick_CTRL_TICKINT_Msk (1ul << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
#define
SysTick_CTRL_ENABLE_Pos 0 /*!< SysTick CTRL: ENABLE Position */
#define
SysTick_CTRL_ENABLE_Msk (1ul << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
/*
SysTick Reload Register Definitions
*/
#define
SysTick_LOAD_RELOAD_Pos 0 /*!< SysTick LOAD: RELOAD Position */
#define
SysTick_LOAD_RELOAD_Msk (0xFFFFFFul << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
/*
SysTick Current Register Definitions
*/
#define
SysTick_VAL_CURRENT_Pos 0 /*!< SysTick VAL: CURRENT Position */
#define
SysTick_VAL_CURRENT_Msk (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
其中的寄存器位指示宏: SysTick_xxx_Pos ,宏展開(kāi)后即為 xxx 在相應(yīng)寄存器中的位置,如控制 SysTick 時(shí)鐘源的 SysTick_CTRL_CLKSOURCE_Pos ,宏展開(kāi)為 2,這個(gè)寄存器位正是在寄存器 STK_CTRL 中的 Bit2。
而寄存器位屏蔽宏:
SysTick_xxx_Msk
,宏展開(kāi)是 xxx 的位全部置 1 后,左移 SysTick_xxx_Pos 位。如控制 SysTick 時(shí)鐘源的
SysTick_CTRL_CLKSOURCE_Msk
,宏展開(kāi)為?
(1ul << SysTick_CTRL_CLKSOURCE_Pos)?
,把無(wú)符號(hào)長(zhǎng)整型數(shù)值(ul) 1 左移 2 位,得到了一個(gè)只有 Bit2:CLKSOURCE? 位被置 1,其它位為 0 的數(shù)值,這樣的數(shù)值配
合位操作? &(按位與)、| (按位或)可以很方便地修改寄存器的某些位。假如控制 CLKSOURCE 需要四個(gè)寄存器位,這個(gè)宏就應(yīng)該被改為
(0xf ul << SysTick_CTRL_CLKSOURCE_Pos)
? ,這樣就會(huì)得到一個(gè)關(guān)于 CLKSOURCE 的四位被置 1 的值,這些宏的參數(shù)就是這樣被確定的。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

