stm32的初始化注意事項

2021-10-02 04:06:53 字數 2346 閱讀 4098

這是乙個卑微電子資訊學員的開始

寒假開始了,卑微電子資訊學員開始了stm32的學習過程。

一. 通過stm32的引腳測量正波長和占空比的初始化操作

1.以時鐘1為輸出:

以時鐘2為輸入:

一. 通過stm32的引腳測量正波長和占空比的函式

1.hal_tim_readcapturedvalue(&htim2,tim_channel_1);

該函式的功能為讀取htim2的counter peri資訊(即次數資訊);

2.__hal_tim_set_capturepolarity(&htim2,tim_ch

annel_1,tim_icpolarity_falling(或者rising));該函式的功能為設定1中的函式hal_tim_readcapturedvalue(&htim2,tim_channel_1); 在上公升簷或者下降簷讀取資料;

3.hal_tim_ic_stop_it(&htim2,tim_channel_1);

__hal_tim_disable(&htim2);

這兩個函式使htin2停止中斷;

4.hal_tim_ic_start_it(&htim2, tim_channel_1);

__hal_tim_enable(&htim2);

這兩個函式使htin2開始中斷;

5.__hal_tim_set_capturepolarity(&htim2,tim_ch

annel_1,tim_icpolarity_falling(或者rising));該函式的預設**會有錯誤,將它的裡面兩個函式tim_reset_capturepolarity((handle), (channel));

tim_set_capturepolarity((handle), (channel), (polarity)); 中的第乙個的**改為#define tim_reset_capturepolarity(handle,channel)

(((channel) == tim_channel_1) ? ((handle)->instance->ccer &= ~(tim_ccer_cc1p | tim_ccer_cc1np)) :

((channel) == tim_channel_2) ? ((handle)->instance->ccer &= ~(tim_ccer_cc2p | tim_ccer_cc2np)) :

((channel) == tim_channel_3) ? ((handle)->instance->ccer &= ~(tim_ccer_cc3p)) :

((handle)->instance->ccer &= ~(tim_ccer_cc4p)))

一. 通過stm32的引腳測量正波長和占空比的整體**

定義的變數有:

main函式部分:

在user code4中的部分:

在時鐘中斷的部分:

小計:這是乙個較為高效的演算法,只有當每經過了200us後才會進行檢測正波長時間的操作,不會占用cpu或者影響其它任務的進行

STM32延時注意事項

一般stm32延時函式大家都這樣用,但是要注意nms的範圍,systick load為24位暫存器,所以,最大延時為 nms 0xffffff 8 1000 sysclk sysclk的單位為hz nms的單位為 ms 對72m條件下,nms 1864。所以平時在寫程式時,延時1000即1秒時對的,...

stm32埠初始化

今天上課,點亮數碼管,gpio初始化後,數碼管上有一段亂碼。要讓這亂碼消失掉,需要改變gpio初始化的順序。在gpio埠使能後,要加odr 埠暫存器 控制 gpio inittypedef gpio initstructure 定義乙個結構體 rcc apb2periphclockcmd rcc a...

Keil MDK下學習STM32注意事項

摘自 1 stm32韌體庫使用外圍裝置的主要思路 在stm32中,外圍裝置的配置思路比較固定。首先是使能相關的時鐘,一方面是裝置本身的時鐘,另一方面如果裝置通過io口輸出還需要使能io口的時鐘 最後如果對應的io口是復用功能的io口,則還必須使能afio的時鐘。其次是配置gpio,gpio的各種屬性...