STM32F4教程 第四節 SysTick之延時

2021-10-09 05:19:26 字數 2367 閱讀 8746

cease to struggle and you cease to live.(thomas carlyle)

生命不止,奮鬥不息。(卡萊爾)

systick暫存器

一共4個systick暫存器

systick 控制和狀態暫存器---------ctrl

systick 重裝載數值暫存器- load

systick 當前值暫存器- val

systick定時器框架分析

韌體庫中的systick相關函式:

systick中斷服務函式:

延遲實現

delay.c

定時器:晶元內通過計數得到定時時長的外設。

定時器時長短與什麼有關:定時器的頻率及設定計數大小有關

頻率單位:1ghz = 1000mhz = 1000 000khz = 1000 000 000hz

1hz:1s

產生乙個方波,1mhz:1s

產生1000 000方波,在stm32當中,乙個方波數乙個數。

請問在1mhz下,計數500個數,用時多長???(0.0005s  0.5ms  500us)

500/1000 000 = 500us

1s = 1000ms = 1000 000us = 1000 000 000ns

systick定時器,是乙個簡單的定時器,對於cm3,cm4核心晶元,都有systick定時器。常用來做延時,或者實時系統的心跳時鐘。

systick定時器就是系統滴答定時器,乙個24 位的倒計數定時器,計到0 時,將從reload 暫存器中自動重裝載定時初值。只要不把它在systick 控制及狀態暫存器中的使能位清除,就永不停息,即使在睡眠模式下也能工作。

systick定時器被**在nvic中,用於產生systick異常(異常號:15)

systick中斷的優先順序也可以設定。

ctrl     systick 控制和狀態暫存器 

load systick 自動重裝載除值暫存器 

val      systick 當前值暫存器 

calib  systick 校準值暫存器

對於stm32,外部時鐘源是 hclk(ahb匯流排時鐘)的1/8

systick_clksourceconfig(systick_clksource_hclk_div8);
這一句把systick的時鐘選擇為外部時鐘, 這裡需要注意的是:systick

的時鐘源自 hclk 的 8 分頻, 假設我們外部晶振為 8m,然後倍頻到 168m,那麼systick 的時鐘即為 21mhz,也就是 systick 的計數器 val 每減 1,就代表時間過了1/21us 。

//選擇時鐘源

void systick_clksourceconfig(uint32_t systick_clksource)

//初始化systick,時鐘為hclk,並開啟中斷,core_cm3.h/core_cm4.**件中

__static_inline uint32_t systick_config(uint32_t ticks)

void systick_handler(void);
#include "delay.h"

u32 my_us = 21; //計21個數,用時1us

u32 my_ms = 21000; //計21000個數,用時1ms

void delay_init(void)

//引數u32 nus值範圍:0~798915

void delay_us(u32 nus)

while( temp & (0x01<<0) && !(temp & (0x01<<16)) );

//判斷定時器是否開啟 判斷計數是否到0

//關定時器

systick->ctrl &= ~(0x01<<0);

}//引數u32 nms值範圍:0~798

void delay_ms(u32 nms)

while( temp & (0x01<<0) && !(temp & (0x01<<16)) );

//判斷定時器是否開啟 判斷計數是否到0

//關定時器

systick->ctrl &= ~(0x01<<0);

}void delay_s(int n)

}

爬蟲第四節bs4

如何用bs4進行資料解析 資料解析的原理 1.標籤定位 2.提取標籤,標籤屬性中的資料值 bs4資料解析的原理 1.例項化乙個beautifulsoup物件,並將頁面原始碼資料載入到該物件當中 2.通過呼叫beautifulsoup物件中相關的屬性或者方法進行標籤定位和資料解析 fp open te...

STM32F4教程 第二節 GPIO之按鍵

you can t judge a tree by its bark.人不可貌相 按鍵庫函式開發 理解按鍵輸入原理圖 獲取按鍵輸入步驟 gpio key按鍵實現例程 key.c main.c 按鍵庫開發要新增庫檔案 stm32f4xx gpio.c 按鍵s1連線pa0,當按鍵s1按下時,pa0為低電...

BAT教程 第四節 批處理中的變數

批處理中的變數,我把他分為兩類,分別為 系統變數 和 自定義變數 系統變數 他們的值由系統將其根據事先定義的條件自動賦值,也就是這些變數系統已經給他們定義了值,不需要我們來給他賦值,allusersprofile 本地 返回 所有使用者 配置檔案程式儲存資料的位置。cd 本地 返回當前目錄字串。cm...