這是乙個卑微電子資訊學員的開始
寒假開始了,卑微電子資訊學員開始了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的各種屬性...