STM32 HAL 通用定時器延時函數

使用通用定時器TIM3,實現ms、us延時。

delay.c

#include "delay.h"
#include "stm32f1xx_hal.h"TIM_HandleTypeDef htim3;/*** @brief  初始化定時器3用于延時* @param  無* @retval 無*/
void Delay_Init(void)
{TIM_ClockConfigTypeDef sClockSourceConfig = {0};/* 使能TIM3時鐘 */__HAL_RCC_TIM3_CLK_ENABLE();/* 基礎配置 */htim3.Instance = TIM3;htim3.Init.Prescaler = 72-1;  // 72MHz / 72 = 1MHz,即計數頻率為1MHz,計數周期為1ushtim3.Init.CounterMode = TIM_COUNTERMODE_UP;htim3.Init.Period = 0xFFFF;  // 最大計數值htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;htim3.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;if (HAL_TIM_Base_Init(&htim3) != HAL_OK){Error_Handler();}sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK){Error_Handler();}/* 啟動定時器 */HAL_TIM_Base_Start(&htim3);
}/*** @brief  微秒級延時* @param  nus: 延時的微秒數,范圍:0~65535* @retval 無*/
void delay_us(uint16_t nus)
{uint16_t differ;uint16_t ticks = nus;uint16_t start = __HAL_TIM_GET_COUNTER(&htim3);while(1){uint16_t now = __HAL_TIM_GET_COUNTER(&htim3);if(now < start)differ = now + 65536 - start;  // 處理計數器溢出elsediffer = now - start;if(differ >= ticks)break;}
}/*** @brief  毫秒級延時* @param  nms: 延時的毫秒數* @retval 無*/
void delay_ms(uint16_t nms)
{uint32_t i;for(i = 0; i < nms; i++){delay_us(1000);  // 1ms = 1000us}
}

?delay.h

#ifndef __DELAY_H
#define __DELAY_H#include "stm32f1xx_hal.h"void Delay_Init(void);
void delay_us(uint16_t nus);
void delay_ms(uint16_t nms);#endif /* __DELAY_H */

?使用示例

  Delay_Init();delay_ms(100);

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76762.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76762.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76762.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件功能測試和非功能測試有什么區別和聯系?

軟件測試是保障軟件質量的核心環節&#xff0c;而軟件功能測試和非功能測試作為測試領域的兩大重要組成部分&#xff0c;承擔著不同但又相互關聯的職責。 軟件功能測試指的是通過驗證軟件系統的各項功能是否按照需求規格說明書來正確實現&#xff0c;確保軟件的功能和業務流程…

使用Java調用TensorFlow與PyTorch模型:DJL框架的應用探索

在現代機器學習的應用場景中&#xff0c;Python早已成為廣泛使用的語言&#xff0c;尤其是在深度學習框架TensorFlow和PyTorch的開發和應用中。盡管Java在許多企業級應用中占據一席之地&#xff0c;但因為缺乏直接使用深度學習框架的能力&#xff0c;往往使得Java開發者對機器學…

Docker安裝beef-xss

新版的kali系統中安裝了beef-xss會因為環境問題而無法啟動&#xff0c;可以使用Docker來安裝beef-xss&#xff0c;節省很多時間。 安裝步驟 1.啟動kali虛擬機&#xff0c;打開終端&#xff0c;切換到root用戶&#xff0c;然后執行下面的命令下載beef的docker鏡像 wget https:…

metasploit(2)生成dll木馬

聲明&#xff01;本文章所有的工具分享僅僅只是供大家學習交流為主&#xff0c;切勿用于非法用途&#xff0c;如有任何觸犯法律的行為&#xff0c;均與本人及團隊無關&#xff01;&#xff01;&#xff01; 一、dll文件基本概念 DLL 是一種包含可由多個程序同時使用的代碼和數…

5V 1A充電標準的由來與技術演進——從USB誕生到智能手機時代的電力革命

點擊下面圖片帶您領略全新的嵌入式學習路線 &#x1f525;爆款熱榜 88萬閱讀 1.6萬收藏 一、起源&#xff1a;USB標準與早期電力傳輸需求 1. USB的誕生背景 1996年&#xff0c;由英特爾、微軟、IBM等公司組成的USB-IF&#xff08;USB Implementers Forum&#xff09;發布了…

使用Python設置excel單元格的字體(font值)

一、前言 通過使用Python的openpyxl庫&#xff0c;來操作excel單元格&#xff0c;設置單元格的字體&#xff0c;也就是font值。 把學習的過程分享給大家。大佬勿噴&#xff01; 二、程序展示 1、新建excel import openpyxl from openpyxl.styles import Font wb openpyxl.…

【設計模式】深入解析代理模式(委托模式):代理模式思想、靜態模式和動態模式定義與區別、靜態代理模式代碼實現

代理模式 代理模式&#xff0c;也叫委托模式。 Spring AOP 是基于動態代理來實現 AOP 的 定義 為其他對象提供一種代理 以控制對這個對象的訪問。它的作用就是通過提供一個代理類&#xff0c;讓我們在調用目標方法的時候&#xff0c;不再是直接對目標方法進行調用&#xff0c;而…

利用java語言,怎樣開發和利用各種開源庫和內部/自定義框架,實現“提取-轉換-加載”(ETL)流程的自動化

一、ETL 架構設計的核心要素? 在企業級數據處理場景中&#xff0c;ETL&#xff08;Extract-Transform-Load&#xff09;流程自動化是數據倉庫、數據湖建設的核心環節。基于 Java 生態的技術棧&#xff0c;我們可以構建分層解耦的 ETL 架構&#xff0c;主要包含以下四層結構&am…

2023藍帽杯初賽內存取證-8

也是用到pslist模塊&#xff0c;加上grep過濾”chrome“即可&#xff1a; vol.py --plugin/opt/volatility/plugins -f memdump.mem --profile Win7SP1x64 pslist | grep "chrome" 第一個是PID&#xff0c;第二個是PPID&#xff0c;第三個是線程數&#xff0c;第四個…

【C語言】動態內存的常見錯誤

前言&#xff1a; 在上章節中講解了動態內存的概念和管理的核心函數。 在本章節繼續為大家介紹動態內存的常見錯誤&#xff0c;讓大家更好的理解運用。 補充&#xff1a;使用內存函數需要頭文件<stdlib.h> 對NULL指針的解引用操作 當使用malloc、calloc或realloc等函…

uniapp-x 二維碼生成

支持X&#xff0c;二維碼生成&#xff0c;支持微信小程序&#xff0c;android&#xff0c;ios&#xff0c;網頁 - DCloud 插件市場 免費的單純用愛發電的

Linux內核之文件驅動隨筆

前言 近期需要實現linux系統文件防護功能&#xff0c;故此調研了些許知識&#xff0c;如何實現文件防護功能從而實現針對文件目錄防護功能。當被保護的目錄&#xff0c;禁止增刪改操作。通過內核層面實現相關功能&#xff0c;另外在通過跟應用層面交互從而實現具體的業務功能。…

利用大模型實現地理領域文檔中英文自動化翻譯

一、 背景描述 在跨國性企業日常經營過程中&#xff0c;經常會遇到專業性較強的文檔翻譯的需求&#xff0c;例如法律文書、商務合同、技術文檔等&#xff1b;以往遇到此類場景&#xff0c;企業內部往往需要指派專人投入數小時甚至數天來整理和翻譯&#xff0c;效率低下&#x…

鴻蒙Flutter倉庫停止更新?

停止更新 熟悉 Flutter 鴻蒙開發的小伙伴應該知道&#xff0c;Flutter 3.7.12 鴻蒙化 SDK 已經在開源鴻蒙社區發布快一年了&#xff0c; Flutter 3.22.x 的鴻蒙化適配一直由鴻蒙突擊隊倉庫提供&#xff0c;最近有小伙伴反饋已經 2 個多月沒有停止更新了&#xff0c;不少人以為停…

(七)深入了解AVFoundation-采集:采集系統架構與 AVCaptureSession 全面梳理

引言 在 iOS 開發中&#xff0c;AVFoundation 是構建音視頻功能的強大底層框架。而在音視頻功能中&#xff0c;“采集”往往是最基礎也是最關鍵的一環。從攝像頭捕捉圖形、到麥克風獲取聲音&#xff0c;構建一條高效且穩定的采集鏈是開發高質量音視頻應用的前提。 本系列將逐…

QML ShaderEffect(著色器效果)組件

ShaderEffect 是 QML 中用于實現自定義著色器效果的組件&#xff0c;允許開發者使用 GLSL 著色器語言創建圖形效果。 核心屬性 基本屬性 屬性類型默認值說明fragmentShaderstring""片段著色器代碼vertexShaderstring""頂點著色器代碼blendingbooltrue是…

基于javaweb的SSM教材征訂與發放管理系統設計與實現(源碼+文檔+部署講解)

技術范圍&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容&#xff1a;免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

大模型學習筆記------Llama 3模型架構之分組查詢注意力(GQA)

大模型學習筆記------Llama 3模型架構之分組查詢注意力&#xff08;GQA&#xff09; 1、分組查詢注意力&#xff08;GQA&#xff09;的動機2、 多頭注意力&#xff08;Multi-Head Attention, MHA&#xff09;3、 多查詢注意力 (Multi-Query Attention&#xff0c;MQA)4、 分組查…

matlab 環形單層柱狀圖

matlab 環形單層柱狀圖 matlab 環形單層柱狀圖 matlab 環形單層柱狀圖 圖片 圖片 【圖片來源粉絲】 我給他的思路是&#xff1a;直接使用風玫瑰圖可以畫出。 rose_bar 本次我的更新和這個有些不同&#xff01;是環形柱狀圖&#xff0c;可調節細節多&#xff1b; 只需要函數…

Docker--Docker網絡原理

虛擬網卡 虛擬網卡&#xff08;Virtual Network Interface&#xff0c;簡稱vNIC&#xff09; 是一種在軟件層面模擬的網卡設備&#xff0c;不依賴于物理硬件&#xff0c;而是通過操作系統或虛擬化技術實現網絡通信功能。它允許計算機在虛擬環境中模擬物理網卡的行為&#xff0…