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...