stm32f103 SysTick系統定時器

2021-09-27 04:38:44 字數 1376 閱讀 2690

systick—系統定時器是屬於cm3核心中的乙個外設,內嵌在nvic中。系統定時器 是乙個24bit的向下遞減的計數器,計數器每計數一次的時間為1/sysclk,一般我們設定 系統時鐘sysclk等於72m。當重裝載數值暫存器的值遞減到0的時候,系統定時器就產生一次中斷,以此迴圈往復。

systick—系統定時器有4個暫存器,簡要介紹如下。在使用systick產生定時的時候,只需要配置前三個暫存器,最後乙個校準暫存器不需要使用。

暫存器名稱 暫存器描述

ctrl systick控制及狀態暫存器

load systick重裝載數值暫存器

val systick當前數值暫存器

calib systick校準數值暫存器

systick屬於核心的外設,有關的暫存器定義和庫函式都在核心相關的庫檔案core_cm3.h中。

用韌體庫程式設計的時候我們只需要呼叫庫函式systick_config()即可,形參ticks用來設定重裝載暫存器的值,最大不能超過重裝載暫存器的值2的24次方,當重裝載暫存器的值遞減到0的時候產生中斷,然後重裝載暫存器的值又重新裝載往下遞減計數,以此迴圈往復。緊隨其後設定好中斷優先順序,最後配置系統定時器的時鐘等於ahbclk=72m,使能定時器和定時器中斷,這樣系統定時器就配置好了,乙個庫函式搞定。

systick定時器的計數器是向下遞減計數的,計數一次的時間tdec=1/clkahb,當重灌 載暫存器中的值valueload減到0的時候,產生中斷,可知中斷一次的時間 tint=valueload*tdec=valueload/clkahb,其中clkahb=72mhz。如果設定 valueload為72,那中斷一次的時間tint=72/72m=1us。

systick_config()的形參ticks對應的值valueload;

ticks的值為720,那麼得到的時間就是10us;

systick定時時間的計算:

當設定好中斷時間tint後,我們可以設定乙個變數t,用來記錄進入中斷的次數,那 麼變數t乘以中斷的時間tint就可以計算出需要定時的時間。

void

systick_init

(void

)volatile uint32_t timingdelay =0;

void

delay_us

(__io u32 ntime)

//stm3210x_it.c

extern uint32_t timingdelay ;

void

systick_handler

(void

)}

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...

STM32F103啟動檔案

目錄 一 概述 二 彙編指令 2.1 equ 2.2 area 2.3 space 2.4 preserve8 2.5 thumb 2.6 export 2.7 dcd 2.8 proc 2.9 ldr 2.10 blx 2.11 bx 2.12 temport 2.13 b 2.14 if,els...

筆記 STM32F103 SPI flash概述

spi介面 spi 是英語 serial peripheral inte ce 的縮寫,就是序列外圍裝置介面。是一種高速的,全雙工,同步的通訊匯流排,並且在晶元的管腳上只占用四根線,節約了晶元的管腳 內部結構 spi 介面一般使用4條線通訊 miso主裝置資料輸入,從裝置資料輸出。mosi主裝置資料...