開發板:正點原子STM32F407ZGT6探索者
舵機:SG90
舵機線材分辨:褐色 / 紅色 / 橘黃色 —— GND / VCC / PWM_signal
與開發板接線:褐色 / 紅色 / 橘黃色 —— GND / +5V / PF6(任選的PF6)
2.1、舵機需要的訊號頻率為50HZ,對應週期是 0.02 ,所以 arr 設定為 20000 -1 ,psc 設定為 168-1,原因是這麼設定可剛好按如下算出頻率是50HZ;
2.2、定時器工作頻率 Ft = 84 MHz ,單位:Mhz,來源:此次任選採用PF6針腳,而PF6可重對映到TIM10_CH1,而TIM10掛載在APB2上,APB2上的定時器時脈頻率是168HZ(前提是這塊開發板的SYSCLK直接設定到最大頻率168MHz)。還想看168的圖解來源請直接開啟CuceMX或CubeIDE在「時鐘樹設定欄目」看到。
2.3、計算方法
定時器溢位時間計算方法: Tout = ( (arr + 1) * (psc + 1) ) / Ft us.
週期 = (2 0000 * 168)/ (168 000 000) = 0.02 秒;
頻率 = 1 / 週期 = 50 HZ ;
gtim.h
gtim.c
main.c
4.1、此塊程式碼可以直接拿去用,也可以按照需求改 main.c 裡 while(1) 裡面的語句完成自定義控制。
4.2、PF6 與 「ATK MODULE」 處插 「 WIFI模組——正點原子ATK ESP 01 」 佔用衝突,請務必取下WIFI模組再拷貝程式碼執行或者非要用WiFi模組那就不用PF6改用其他帶定時器pwm輸出的引腳。