15 systick定時器的講解使用

2021-09-26 22:48:50 字數 1764 閱讀 8697

在程式中避免不了使用延時函式,以前在學習51微控制器的時候常用delay函式進行延時,本質是不斷消耗cup達到延時的目的,不實用,但是還是要學只是幫助大家入門而已,定時一般會用到定時器。stm32資源豐富,定時可以採用定時器,,但是還有乙個更好的實現方法,systick定時器,這個定時器常用作來實現延時功能,功能特點決定它既不會占用中斷,也不占用系統定時器。這部分資料參考原子教程。專門做了乙個資料夾實現定時、串列埠的功能,特別是針對ucosii做了處理,方便我們以後移植ucosii。

systick.c檔案

#include "systick.h"

void systick_delay_us(uint32_t us)

systick->ctrl &=~systick_ctrl_enable_msk;

}void systick_delay_ms(uint32_t ms)

systick->ctrl &=~systick_ctrl_enable_msk;

}

systick.**件

#ifndef __systick_h__

#define __systick_h__

#include "stm32f10x.h"

void systick_delay_ms(uint32_t ms);

void systick_delay_us(uint32_t us);

#endif

main.c

#include "stm32f10x.h"

#include "led.h"

#include "systick.h"

int main(void)

}

systick.c檔案

#include "systick.h"

volatile uint32_t isr_ms;

void systick_delay_ms_int(uint32_t ms)

systick.**件

#ifndef __systick_h__

#define __systick_h__

#include "stm32f10x.h"

void systick_delay_ms_int(uint32_t ms);

#endif

stm3210x_it.c

extern volatile uint32_t isr_ms;

void systick_handler(void)

main.c

#include "stm32f10x.h"

#include "led.h"

#include "systick.h"

int main(void)

}

《權威指南》p133

SysTick 系統定時器

本章參考資料 arm cortex m4f 技術參考手冊 4.5 章節 systick timer stk 和 4.48 章節 shprx,其中 stk 這個章節有 systick 的簡介和暫存器的詳細描述。因為 systick 是屬於 cm4 核心的外設,有關暫存器的定義和部分庫函式都在 core...

systick(滴答定時器)

今天主要總結一下滴答定時器的相關操作 首先,他是乙個24位的倒數定時器,當計數到0的時候,會從lora暫存器中重新裝載值,只要不把ctrl暫存器中enable清零,他就不會停止。滴答的結構體如下 typedef struct systick type 通常使用前三個暫存器。控制盒狀態暫存器 ctrl...

SysTick 系統定時器

本章參考資料 arm cortex m4f 技術參考手冊 4.5 章節 systick timer stk 和 4.48 章節 shprx,其中 stk 這個章節有 systick 的簡介和暫存器的詳細描述。因為 systick 是屬於 cm4 核心的外設,有關暫存器的定義和部分庫函式都在 core...