LOAD = t" />

精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

stm32delay函數怎么寫

科技綠洲 ? 來源:網絡整理 ? 作者:網絡整理 ? 2023-12-21 17:53 ? 次閱讀

STM32的延時函數可以使用SysTick定時器來實現。SysTick定時器是一個24位的計數器,它可以在每個時鐘周期自動減少計數值,直到計數值為0時觸發中斷。我們可以利用SysTick定時器的特性來實現精確的延時函數。

以下是一個實現延時函數的示例代碼:

#include "stm32xxxx.h"

void SysTick_Handler(void)
{
// 在這里可以寫一些需要周期執行的操作,但是要盡量保持簡潔
}

void delay_us(uint32_t us)
{
uint32_t ticks = us * (SystemCoreClock / 1000000); // 將微秒轉換為滴答數

SysTick- >LOAD = ticks - 1; // 設置定時器加載值
SysTick- >VAL = 0; // 清空當前計數值
SysTick- >CTRL |= SysTick_CTRL_ENABLE_Msk; // 啟動定時器

while (!(SysTick- >CTRL & SysTick_CTRL_COUNTFLAG_Msk)); // 等待定時器倒計數完畢

SysTick- >CTRL &= ~SysTick_CTRL_ENABLE_Msk; // 關閉定時器
}

void delay_ms(uint32_t ms)
{
while (ms--)
{
delay_us(1000); // 延時1毫秒
}
}

int main()
{
// 你的程序邏輯
// ...

while (1)
{
// 你的程序邏輯
// ...
}

return 0;
}

在這個例子中,我們通過SysTick定時器的中斷來實現延時函數。首先,我們定義了兩個延時函數delay_usdelay_ms,它們分別用來延時指定的微秒數和毫秒數。

在delay_us函數中,我們首先計算需要延時的滴答數,然后設置SysTick的LOAD寄存器為滴答數減1,清空當前計數值,并啟動定時器。接著,我們使用一個循環等待直到定時器倒計數完畢,即SysTick_CTRL_COUNTFLAG位被置位。最后,我們關閉定時器并結束函數。

在delay_ms函數中,我們調用delay_us函數來實現毫秒級的延時。我們通過循環遞減ms的方式來實現毫秒級的延時,每次循環調用一次delay_us函數延時1毫秒。

在main函數中,我們可以在你的程序邏輯中調用延時函數來實現需要的延時效果。你可以在while循環中重復調用延時函數來實現周期性的延時效果。

需要注意的是,由于SysTick定時器是由SysTick_Handler中斷驅動的,所以你不能在SysTick_Handler中寫太多的代碼,以免影響延時的準確性。建議在SysTick_Handler中只加入必要的代碼,并保持簡潔。

以上是一個簡單的基于SysTick定時器的延時函數的實現。你可以根據自己的需求進行修改和改進,比如添加更多的延時函數、增加更高的精度等。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2266

    文章

    10876

    瀏覽量

    354925
  • 計數器
    +關注

    關注

    32

    文章

    2254

    瀏覽量

    94371
  • 定時器
    +關注

    關注

    23

    文章

    3241

    瀏覽量

    114514
  • 函數
    +關注

    關注

    3

    文章

    4308

    瀏覽量

    62444
收藏 人收藏

    評論

    相關推薦

    匯總stm32 delay文件

    stm32 delay文件總結delay.h#ifndef __DELAY_H#define __DELAY_H #include "sys
    發表于 08-11 06:12

    STM32 delay函數有哪些應用

    STM32delay函數應用應用與說明Cortex M4內核編程手冊有關時鐘系統的內容定時函數的實現delay_init 函數
    發表于 08-23 06:23

    怎樣去解決STM32F103ZET6庫函數程序移植的Delay函數異常問題

    為什么STM32F103ZET6庫函數程序移植到STM32F103C8T6時Delay函數會發生異常呢?其解決方法是什么?
    發表于 12-15 06:58

    LED閃爍開發之while循環函數delay延時函數的資料概述

    本文檔的主要內容詳細介紹的是LED閃爍開發之C語言常用的預處理命令和while循環函數delay延時函數的資料概述免費下載。
    發表于 11-12 08:00 ?15次下載
    LED閃爍開發之while循環<b class='flag-5'>函數</b>和<b class='flag-5'>delay</b>延時<b class='flag-5'>函數</b>的資料概述

    51單片機延時函數delay的編寫實例函數和資料免費下載

    本文檔的主要內容詳細介紹的是51單片機延時函數delay的編寫實例函數和資料免費下載。
    發表于 07-17 17:39 ?2次下載
    51單片機延時<b class='flag-5'>函數</b><b class='flag-5'>delay</b>的編寫實例<b class='flag-5'>函數</b>和資料免費下載

    stm32用什么軟件程序

    stm32用什么軟件程序?STM32單片機在編程時可以使用庫函數和使用配置寄存器的方式來進行程序的實現。
    發表于 09-21 16:00 ?1.5w次閱讀

    STM32單片機-庫函數】SysTick延時—delay

    : SysTick延時函數頭文件 /* --------------------------------------------------------- */#ifndef _DELAY_H_#define _DELAY
    發表于 11-24 19:06 ?13次下載
    【<b class='flag-5'>STM32</b>單片機-庫<b class='flag-5'>函數</b>】SysTick延時—<b class='flag-5'>delay</b>

    msp430內置函數總結 __bic_SR_register(),__delay_cycles(x)

    msp430內置函數總結 __bic_SR_register(),__delay_cycles(x)
    發表于 11-25 09:51 ?0次下載
    msp430內置<b class='flag-5'>函數</b>總結 __bic_SR_register(),__<b class='flag-5'>delay</b>_cycles(x)

    c51簡單delay函數,不同類型同值字符的延時時間不同

    c51delay函數不同類型參數的不同效果
    發表于 11-29 10:51 ?11次下載
    c51簡單<b class='flag-5'>delay</b><b class='flag-5'>函數</b>,不同類型同值字符的延時時間不同

    stm32 delay文件總結

    stm32 delay文件總結delay.h#ifndef __DELAY_H#define __DELAY_H #includ
    發表于 12-24 19:36 ?6次下載
    <b class='flag-5'>stm32</b> <b class='flag-5'>delay</b>文件總結

    C語言 | 延時函數Delay

    的,采用“nop”函數,這個函數相當匯編NOP指令,延時幾微秒。NOP指令為單周期指令,可由晶振頻率算出延時時間,對于12M晶振,延時1us。 延時一個機器周期1.08us#include_nop_();延時10usvoid
    發表于 01-13 13:38 ?14次下載
    C語言 | 延時<b class='flag-5'>函數</b>(<b class='flag-5'>Delay</b>)

    Systick定時器延時原理與HAL_Delay()延時函數的使用

    代碼的書寫過程中經常用到延時,這里主要講述一下HAl延時,HAL庫之HAL_Delay()函數在72M主頻,STM32CUBEMX自動生成情況下,默認為延時1ms單位,即HAL_Delay
    的頭像 發表于 04-26 09:09 ?1.5w次閱讀

    在HAL庫中用定時器實現自定義延時函數delay_us()

    STM32程序從標準庫移植到HAL庫的時候,會發現HAL庫中只有一個毫秒級延時函數HAL_Delay(),而沒有微秒級延時delay_us(),本文就在HAL庫中用定時器實現這個
    的頭像 發表于 09-21 10:33 ?1.1w次閱讀

    如何列無源網絡傳遞函數

    如何列無源網絡傳遞函數
    的頭像 發表于 03-10 16:15 ?4939次閱讀
    如何列<b class='flag-5'>寫</b>無源網絡傳遞<b class='flag-5'>函數</b>

    STM32蜂鳴器音樂播放實例教程

    開啟定時器TIM7,是為了延時函數HAL_Delay_us()。具體過程請移步此文:STM32的HAL庫實現自定義延時函數
    發表于 03-26 14:19 ?2079次閱讀
    <b class='flag-5'>STM32</b>蜂鳴器音樂播放實例教程