在程式中避免不了使用延時函式,以前在學習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...