STM32 學習筆記(4)系統時鐘

2021-09-25 20:29:28 字數 2004 閱讀 2704

cortex-m3中,有個systick 系統時鐘,systick 是cm3核心的外設,相關定義在core_cm3.h中。系統定時器內嵌在nvic中,是24位的向下遞減的計數器,每記一次數的時間是1/sysclk。

一般設定sysclk=72m。而系統時鐘一般用於作業系統產生時基。

與systick相關的暫存器有四個,ctrl控制及狀態暫存器、load重灌數值暫存器、val當前數值暫存器、calib校準數值暫存器。

程式設計要點:

(1)新建相關的.c .h 檔案,在stm32f10x_it.h申明中斷服務函式。

systick 有關的暫存器在core_cm3.h 中。

systick配置函式為:static_inline uint32_t systick_config(uint32_t ticks); // ticks 最大不超過2的24次方。當ticks遞減到0時產生中斷。函式完成的工作有:

1)設定重灌暫存器

2)設定優先順序;__static_inline void nvic_setpriority(irqn_type irqn, uint32_t priority),systick是核心外設,優先順序和普通外設不一樣,通過核心外設中斷優先順序 scb暫存器的shprx(x=1,2,3) 來設定。優先順序有0~15,值越小優先順序越高。

3)設定當前值為0

4)設定ahbclk=72m

5)使能定時器和定時器中斷

systick_config()庫函式主要配置了systick 中的三個暫存器:load、val 和ctrl;

注意:核心外設和片上外設優先順序根據二進位制轉化後比較,具有比較的相同性。

(2)使用者定義systick初始化函式 systick_init()

/* systemfrequency / 1000 1ms   中斷一次

* systemfrequency / 100000 10us 中斷一次

* systemfrequency / 1000000 1us 中斷一次

*/這是一次計數的時間,乘以load重灌的數值就是一次中斷的時間。

(3)systick定時函式來設定定時時間

全域性變數的定義使用 看這個鏈結介紹;

在systick.h 中:

#ifndef __systick_h

#define __systick_h

#include "stm32f10x.h"

#include "core_cm3.h"

#define systemcoreclock 72000000

void delay_1s(uint32_t ntime);

void delay_10us(uint32_t ntime);

void timingdelay_decrement(void);

void systick_iint(void);

#endif

在systick.c 中:

#include "./systick_bsp/systick.h"

__io uint32_t timingdelay;

__io uint32_t timingdelay_ss;

void systick_iint(void) }

void delay_10us(uint32_t ntime)

void delay_1s(uint32_t ntime)

}void timingdelay_decrement(void)

}

在stm32f10x_it.c 中寫系統時鐘中斷服務函式:

void systick_handler(void)

要點:

(1)我們知道時鐘72m的計數一次的時間為1/72 m ,  多少次計數中斷一次的時間是乘以重灌暫存器的值,因為是減數計數。

一次中斷的時間是(systemcoreclock/100000)×1/72 m; 10us

(2)10us*timingdelay 就是微妙的計數

STM32學習 時鐘系統

眾所周知,時鐘系統是 cpu 的脈搏,就像人的心跳一樣。所以時鐘系統的重要性就不言而 喻了。stm32 的時鐘系統 stm32 的時鐘系統比較複雜,不像簡單的 51 微控制器乙個系統時鐘就可以解決一切。於 是有人要問,採用乙個系統時鐘不是很簡單嗎?為什麼 stm32 要有多個時鐘源呢?因為首先 st...

STM32系統時鐘

1 參考資料 stm32f1開發指南 庫函式版本 4.3小節 時鐘系統 stm32中文參考手冊v10 第六章 復位和時鐘控制 rcc 2 時鐘系統知識總結 1 stm32有5個時鐘源 hsi hse lsi lse pll hsi是高速內部時鐘,rc振盪器,頻率為8mhz,精度不高 hse是高速外部...

stm32系統時鐘

hsi 約等於8mhz rc振盪器產生的時鐘 hse 外部時鐘 css 如果檢測到外部時鐘的損壞,自動切換到hsi 系統時鐘和rtc時鐘 均有三個 systick定時器 簡單的定時器,常用來做延時和心跳時鐘 24位的倒計時定時器 ctrl暫存器 其實滴答定時器很簡單,就是設定初值,然後延遲,最後就是...