STM32----摸石头过河系列(七)
生活随笔
收集整理的這篇文章主要介紹了
STM32----摸石头过河系列(七)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
今天練習了32中的SysTick定時器,通常叫做滴答定時器。定時器的作用,用過51的想必都知道。定時器主要用來處理一些周期性的,時間間隔固定的事件。同時定時器也可以用來得到一個事件所耗費的時間。下面來看一下滴答定時器的配置過程:
下面來看看代碼(systick.c):
#include"systick.h"u32 TimeTemp;void SysTick_Init(void) {if(SysTick_Config(SystemCoreClock/1000)){while(1);}SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk; }void Delay_ms(u32 nTime) {TimeTemp = nTime;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimeTemp != 0); }void TimeTemp_Decrement() {if(TimeTemp != 0){TimeTemp--;} } SysTick_Config(SystemCoreClock/1000)初始化定時器進入中斷的時間間隔。SystemCoreClock/1000表示1ms進入中斷;SystemCoreClock/100000表示1us進入中斷。如果配置成功,跳過if判斷,執(zhí)行SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;來關閉定時器。
void Delay_ms(u32 nTime) {TimeTemp = nTime;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimeTemp != 0); }該函數(shù)提供被使用者所調(diào)用的延時函數(shù),傳入的參數(shù)為延時的時長,單位是毫秒。然后執(zhí)行SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;用來使能定時器,使定時器開始工作。最后等待設置的時間,已達到延時的目的。
void TimeTemp_Decrement() {if(TimeTemp != 0){TimeTemp--;} }該函數(shù)為在中斷中要執(zhí)行的函數(shù),主要來計數(shù)進入中斷幾次,直到設置的時間結(jié)束。
下面來看一下主函數(shù)(main.c):
#include"led.h" #include"usart.h" #include"systick.h"int main(void) {GPIO_LED_Config();USART1_Config();SysTick_Init();while(1){printf("Turn on the Light!\r\n");LED(ON);Delay_us(5000);printf("Turn off the Light!\r\n");LED(OFF);Delay_us(5000);} }void SysTick_Handler(void) {TimeTemp_Decrement(); }這個定時器的相對來說是比較簡單的,并且它不是外設,它在32的內(nèi)核之中。比較容易實現(xiàn)簡單的定時任務。
總結(jié)
以上是生活随笔為你收集整理的STM32----摸石头过河系列(七)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: github本地文件和远端文件的协同
- 下一篇: 你一定要知道的关于Linux文件目录操作