
需求:
?
接線:
?
?
定時器配置:
?
編寫微秒級函數(shù):
1、總結(jié) 微秒級定時:
這個延遲函數(shù)的實現(xiàn)利用了定時器 TIM2 的計數(shù)器來測量時間,從而實現(xiàn)微秒級的延遲。在一些嵌入式系統(tǒng)中,這種方式是常見的延遲實現(xiàn)方法。請注意,這種忙等待的方式可能在一些場景中不夠精確,因為它依賴于系統(tǒng)的時鐘頻率。在一些要求更高精度的場合,可能需要采用其他延遲方式,比如使用硬件定時器或者其他精確的定時方法。?
2、(1 * n_us)-1)是什么意思?為什么要減一呢?
表達(dá)式 (1 * n_us) - 1
其實等價于 n_us - 1
。在這里,1 * n_us
實際上就是 n_us
,因為任何數(shù)乘以1都等于它本身。所以,這個表達(dá)式就是為了減小 n_us
的值。
在實際應(yīng)用中,通常采用這種方式是為了確保延遲的準(zhǔn)確性。假設(shè)你要延遲 10 微秒,但由于延遲函數(shù)本身也需要一定的時間,為了確??傃舆t時間是準(zhǔn)確的,你可能會將計數(shù)器的目標(biāo)值設(shè)置為 n_us - 1
。
例如,如果 n_us
為10,那么 (1 * n_us) - 1
就是 9。這意味著在計數(shù)器達(dá)到9之前,循環(huán)會一直等待。這是一種補償,以考慮延遲函數(shù)自身的執(zhí)行時間,確??傮w延遲接近預(yù)期值。
主函數(shù):

1、__HAL_TIM_ENABLE(&htim2);和HAL_TIM_Base_Start(&htim2);有啥區(qū)別?
__HAL_TIM_ENABLE(&htim2)
和 HAL_TIM_Base_Start(&htim2)
都是用于啟動定時器 TIM2 的函數(shù),但是它們在調(diào)用的時候可能存在一些微妙的區(qū)別。
-
__HAL_TIM_ENABLE(&htim2)
:- 這是一個宏,通常在 HAL 庫中用于啟用定時器。
- 它可能直接設(shè)置定時器的控制寄存器中的相應(yīng)位,使定時器開始計數(shù)。
- 在 HAL 庫中,這個宏可能執(zhí)行一些底層的配置操作,以確保定時器正常工作。
-
HAL_TIM_Base_Start(&htim2)
:- 這是 HAL 庫中的一個函數(shù),用于啟動定時器。
- 這個函數(shù)可能執(zhí)行一系列初始化步驟,包括設(shè)置定時器的模式、分頻因子等。
- 與
__HAL_TIM_ENABLE
不同,HAL_TIM_Base_Start
是一個函數(shù)調(diào)用,而不是宏,因此它可能包含一些更復(fù)雜的邏輯。
在很多情況下,這兩者可以互換使用,因為在 HAL 庫中,__HAL_TIM_ENABLE
實際上調(diào)用了 HAL_TIM_Base_Start
。然而,如果你要使用底層的 HAL 庫以外的特定功能,可能需要查看它們的具體實現(xiàn)以了解更多細(xì)節(jié)。
總的來說,如果你在使用 STM32 的 HAL 庫,并且只是簡單地啟動定時器,這兩者可能沒有太大的區(qū)別。在更復(fù)雜的應(yīng)用中,可能需要查看具體的 HAL 庫文檔或源代碼以了解更多信息。
2、?__HAL_TIM_SetCounter(&htim2, 0);
__HAL_TIM_SetCounter(&htim2, 0);
是一個用于設(shè)置定時器計數(shù)器初值的宏。在這里,htim2
表示 TIM2 定時器的配置。
這行代碼的作用是將 TIM2 的計數(shù)器的值設(shè)置為0。通常在測距應(yīng)用中,當(dāng)開始測量 Echo 信號的時間時,需要先將計數(shù)器清零,然后開始計時。這樣可以確保你測量的是一個相對的時間,而不是累積的時間。文章來源:http://www.zghlxwxcb.cn/news/detail-753738.html
3、__HAL_TIM_GetCounter(&htim2)
__HAL_TIM_GetCounter(&htim2)
是一個用于獲取定時器計數(shù)器當(dāng)前值的宏。在這個上下文中,htim2
是一個結(jié)構(gòu)體或指針,表示 TIM2 定時器的配置。這個宏會讀取 TIM2 的計數(shù)器寄存器的當(dāng)前值,并返回該值。文章來源地址http://www.zghlxwxcb.cn/news/detail-753738.html
到了這里,關(guān)于STM32——超聲波傳感器的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!