STM32 控制紅外線收發



買了一塊STM32的板子,這次需要將IR的code移植到STM32上面,因為STM32成本比樹莓派低得多,所以

一些簡單的外設掛在STM32上就行了。

我買的板子的型號是STM32F103C8T6,價格還是挺便宜的。另外,紅外模塊采樣自己搭建的模塊,可以自己控制距離,在上一篇博文中有所提到。先來一張圖:




既然已經有了成功的案例,只要將之前的代碼移植過來就行了。底層的實現有兩個不一樣,一個是時鍾,另一個是PWM。對於時鍾來說,delay.c里面有實現的源碼,通過配置SysTick來實現延時。這里通過查詢的方式來查詢是否到了目標的時間,為了后續多個外設的運行,可以考慮將其改成TIM中斷來實現。




對於PWM來說,需要調用到PWMx或者PWM1,因為STM32中PWM的原理比較復雜,所以先使用

現成的code來實現,這里采用了(http://blog.sina.com.cn/s/blog_49cb42490100s6uh.html) 的代碼

實現,並且刪除了無用的code。因為TIM的輸入時鍾為72M/2*2 = 72M,所以是足夠產生38K PWM的。



跟樹莓派一樣,這里使用的示例代碼也有相應的延遲,為十多個us。不過可以通過補償來實現。

48us_stm32_openpwm.png




開的時候加入13us,關的時候加入15us。


相應的代碼已傳到github上:

https://github.com/tanhangbo/stm32_iot

入口代碼為 test.c









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM