国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【HAL庫】STM32CubeMX開發(fā)----非阻塞延時實驗----SysTick(滴答定時器)中斷

這篇具有很好參考價值的文章主要介紹了【HAL庫】STM32CubeMX開發(fā)----非阻塞延時實驗----SysTick(滴答定時器)中斷。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

STM32CubeMX 下載和安裝 詳細教程
【HAL庫】STM32CubeMX開發(fā)----STM32F103/F207/F407----目錄


前言

HAL庫 有自帶的 ms級 延時函數(shù): HAL_Delay();
缺點: 這是阻塞延時方式,就是延時期間,什么都不能干,這樣很浪費資源。
這篇文章主要介紹,利用SysTick(滴答定時器)中斷實現(xiàn)非阻塞延時的實驗。

STM32F407----非阻塞延時實驗

主要是利用SysTick(滴答定時器)中斷中有一個計數(shù)變量,每1ms加1,通過獲取這個時間數(shù)值變量,實現(xiàn)非阻塞延時。

相關 HAL庫 函數(shù)

/**
  *@功能:獲取以毫秒為單位的tick值
  *@參數(shù):無
  *@返回值:以毫秒為單位的tick值
  */
__weak uint32_t HAL_GetTick(void)
{
  return uwTick;
}

獲取2個時間點之間的時間間隔的函數(shù)

這個函數(shù)需要自己手動編寫。

具體代碼如下:

/**
  *@功能: 獲取2個時間點之間是否達到期望的延時
  *@參數(shù)1:現(xiàn)在的實時時間
  *@參數(shù)2:開始計時的時間
  *@參數(shù)3:要延時的時間間隔
  *@返回值:0-延時時間未到,1-延時時間已到
  */
uint8_t Get_Time_Interval(uint32_t Current_Time, uint32_t Past_Time, uint32_t Delay_Time)
{
    if(Current_Time < Past_Time)//實時時間小于開始時間,時間計數(shù)發(fā)生回滾
    {
        if(0xFFFFFFFF - Past_Time + Current_Time >= Delay_Time)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    else        //實時時間大于開始時間
    {
        if(Current_Time - Past_Time >= Delay_Time)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
}

使用方法舉例

實驗內容:實現(xiàn)每隔1s,通過串口發(fā)送數(shù)據。

具體代碼如下:

//非阻塞延時實驗舉例
void Non_blocking_delay_example(void)
{
      static  uint32_t  Static_Time = 0;//創(chuàng)建一個時間數(shù)靜態(tài)變量
    
      if(Get_Time_Interval(HAL_GetTick(),Static_Time,1000)==1)
      {
        Static_Time = HAL_GetTick();
        printf("工欲善其事,必先利其器。");
      }
}

將此函數(shù)在主函數(shù)中調用即可,具體如下:

systick 非阻塞,# 【HAL庫】STM32CubeMX開發(fā),stm32,單片機,嵌入式開發(fā)

運行結果如下:
systick 非阻塞,# 【HAL庫】STM32CubeMX開發(fā),stm32,單片機,嵌入式開發(fā)


關于串口通信實驗的詳細信息,請看這篇文章:【HAL庫】STM32CubeMX開發(fā)----STM32F407----Uart串口通信實驗文章來源地址http://www.zghlxwxcb.cn/news/detail-594850.html


到了這里,關于【HAL庫】STM32CubeMX開發(fā)----非阻塞延時實驗----SysTick(滴答定時器)中斷的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【11】STM32·HAL庫開發(fā)-STM32CubeMX簡介、安裝 | 新建STM32CubeMX工程步驟

    【11】STM32·HAL庫開發(fā)-STM32CubeMX簡介、安裝 | 新建STM32CubeMX工程步驟

    ??STM32CubeMX是ST開發(fā)的一款圖形配置工具,可通過配置自動生成 初始化代碼 (并不包括邏輯代碼)。以下是STM32CubeMX官方宣傳圖片,適用于Windows和macOS系統(tǒng),用于生成初始化代碼,一個圖形配置工具,搭配不同系列的STM32Cube固件包,即可支持不同系列的STM32芯片,初始化代碼

    2024年02月17日
    瀏覽(57)
  • STM32 SYSTick高精度延時功能代碼實現(xiàn)

    STM32 SYSTick高精度延時功能代碼實現(xiàn)

    本篇文章將給大家講解一下SYSTICK滴答定時器,以及講解使用滴答定時器來實現(xiàn)高精度延時功能的代碼。 SysTick定時器是嵌入式系統(tǒng)中常見的一個系統(tǒng)定時器,在ARM Cortex-M微控制器中廣泛使用。下面是關于SysTick定時器的一些介紹: 用途: SysTick定時器通常被用作操作系統(tǒng)的時鐘

    2024年02月22日
    瀏覽(93)
  • 2.基于正點原子STM32F103的定時器中斷實驗(HAL庫實現(xiàn))(cubeMX)

    2.基于正點原子STM32F103的定時器中斷實驗(HAL庫實現(xiàn))(cubeMX)

    ? 基本上每一款MCU都會配備定時器這個外設,STM32 的每個通用定時器都是完全獨立的,沒有互相共享的任何資源。 同樣,STM32F1系列的定時器功能也很強大,包括: TIM1和TIM8兩個高級定時器; TIM2~TIM5是個通用寄存器; TIM7,TIM8,兩個基本定時器。 由于本次實驗適用于新手入門

    2023年04月26日
    瀏覽(27)
  • STM32開發(fā)——簡介、開發(fā)環(huán)境(Keil5、CubeMX)、HAL庫

    STM32開發(fā)——簡介、開發(fā)環(huán)境(Keil5、CubeMX)、HAL庫

    目錄 1.簡介-初識STM32 2.開發(fā)環(huán)境 2.1使用Keil5 ?2.2使用STM32CubeMX? 3.標準庫與HAL庫區(qū)別 4.推挽輸出與開漏輸出 什么是單片機? 單片機(Single-Chip Microcomputer)是一種集成電路芯片,把具有數(shù)據處理能力的中央處 理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時

    2024年02月16日
    瀏覽(24)
  • STM32基于HAL庫和STM32CubeMX的實時操作系統(tǒng)FreeRtOS開發(fā)

    STM32基于HAL庫和STM32CubeMX的實時操作系統(tǒng)FreeRtOS開發(fā)

    1、FreeRTOS RTOS是一類操作系統(tǒng),μC/OS,F(xiàn)reeRTOS,RTX,RT-Thread 等這些都是RTOS 類的操作系統(tǒng) FreeRTOS 是眾多RTOS 類操作系統(tǒng)中的一種,F(xiàn)reeRTOS 十分的小巧,可以在資源有限的微控制器中運行,F(xiàn)reeRTOS 也不僅僅局限于在微控制器中使用。就單從文件數(shù)量上來看FreeRTOS 要比μC/OS 少得多

    2024年02月21日
    瀏覽(19)
  • STM32CubeMX配置STM32G031多通道ADC采集(HAL庫開發(fā))

    STM32CubeMX配置STM32G031多通道ADC采集(HAL庫開發(fā))

    時鐘配置HSI主頻配置64M ?勾選打開8個通道的ADC ?使能連續(xù)轉換模式 ?配置好串口,選擇異步模式 配置好需要的開發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向一定要勾選Use Micro LIB ?獲取ADC通道值 主函數(shù)? ?串口輸出

    2024年02月15日
    瀏覽(31)
  • STM32之HAL庫微妙延遲(借助Systick)
  • STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    STM32CubeMX配置STM32G031多通道ADC + DMA采集(HAL庫開發(fā))

    ?時鐘配置HSI主頻配置64M ?勾選打開8個通道的ADC ?使能連續(xù)轉換模式 ?添加DMA ?DMA模式選擇循環(huán)模式 ?使能DMA連續(xù)請求 采樣時間配置160.5 轉換次數(shù)為8 ?配置好8次轉換的順序 ?配置好串口,選擇異步模式 配置好需要的開發(fā)環(huán)境并獲取代碼 ?修改main.c 串口重定向 ?串口重定向

    2024年02月08日
    瀏覽(40)
  • STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據)(HAL庫開發(fā))

    STM32CubeMx配置ADC(多通道采集+DMA讀取數(shù)據)(HAL庫開發(fā))

    目錄 1、函數(shù)配置過程(這是標準庫配置過程): 2、STM32CubeMx配置過程 ?3、main函數(shù)源文件 采集5路ADC數(shù)據,并用串口printf()函數(shù)打印出來。 實驗現(xiàn)象:? ADC轉換的初始條件: 1、使能 2、觸發(fā)源條件完成(這個需要自己配置)利用:HAL_ADC_Start_DMA()函數(shù); ADC中HAL開發(fā)優(yōu)勢就是,

    2023年04月08日
    瀏覽(27)
  • 關于STM32的hal庫中滴答定時器uwTick溢出的思考和分析

    思考:如果中斷函數(shù)HAL_IncTick中的uwTick一直增加導致溢出會不會導致延時不準? 下面展示一些 STM32的官方庫文件stm32f1xx_hal.c部分摘錄 。 系統(tǒng)Tick頻率設置為1毫秒中斷一次,每1ms產生一次Tick中斷, 在Tick中斷中uwTick++; 那么當自增到0xFFFFFFFF后就會溢出,再從0開始自增 。 0xFFFF

    2024年03月21日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包