日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

STM32----摸石头过河系列(七)

發布時間:2025/3/15 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 STM32----摸石头过河系列(七) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天練習了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判斷,執行SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;來關閉定時器。

    void Delay_ms(u32 nTime) {TimeTemp = nTime;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimeTemp != 0); }

    該函數提供被使用者所調用的延時函數,傳入的參數為延時的時長,單位是毫秒。然后執行SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;用來使能定時器,使定時器開始工作。最后等待設置的時間,已達到延時的目的。

    void TimeTemp_Decrement() {if(TimeTemp != 0){TimeTemp--;} }

    該函數為在中斷中要執行的函數,主要來計數進入中斷幾次,直到設置的時間結束。

    下面來看一下主函數(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的內核之中。比較容易實現簡單的定時任務。

    總結

    以上是生活随笔為你收集整理的STM32----摸石头过河系列(七)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。