談到38khz可能大部分人不明白,為什麼要配置io口以38khz來輸出?!
但是如果接觸過紅外遙控的人想必就會比較清楚,現在市面上售賣的一體化紅外置收頭只接收38khz的紅外調製訊號,一般的紅外發射端都是板載455khz,通過整頓分頻,得出了約等於38khz的頻率,再跟資料發射腳進行「與」操作來實現資料傳送,這樣既可以提高發射效率又可以降低電源功耗。
如果只是編寫現成紅外模組的程式,網上有比較多的445khz晶振調製38khz頻率的程式可以借鑑,下面給出m0(stm32f030f4p6)基於外部8m晶振的38khz調製頻率**~
void user_infrared_config()
不同於m3、m4的配置的是,m3、m4需要使能復用時鐘,然而m0的庫函式卻始終找不到復用時鐘的巨集定義,取而代之的是乙個引腳復用配置函式
gpio_pinafconfig(infrared_gpio_port,gpio_pinsource1,gpio_af_1)
最後乙個引數gpio_af_1
需要對照stm32f030晶元手冊的引腳復用表做相應配置
~m0的手冊真心不好找~
由上表可見,pb1的tim3_ch4復用功能是對應af1列,相應的要復用定時器14的話就是af0了
接著,定時器配置,設定自動重裝載計數值為(systemcoreclock/38000)-1
以確保38khz的波形可以產生
tim_timebasestructure.tim_period = (systemcoreclock/38000)-1
配置引腳pwm模式,tim_pulse
用來配置占空比的大小,需要注意的是tim_oc4init()
和tim_oc4preloadconfig()
這兩個函式,用的是定時器的第幾通道的函式名都是不一樣的,程式中用的第4通道,所以函式名都是tim_oc4init
、tim_oc4preloadconfig
如果用的第1通道就是tim_oc1init
和tim_oc1preloadconfig
以此類推。
配置好在main函式中初始化,然後就可以用示波器看到乙個接近完美的波形啦 ~
Cortex M0檔案說明
1 cortexm0ds logic.v cortex m0 designstart處理器邏輯層v檔案。2 cortexm0ds.v cortex m0 designstart處理器巨集單元級描述。3 ahbdcd.v ahb匯流排位址解碼器。4 ahbmux.v ahb匯流排從裝置多路選擇器。5 ...
Jlink除錯芯唐Cortex M0簡單步驟
芯唐官方的燒錄器是nu link,用芯唐微控制器做專案開發建議使用官方的燒錄器 但是不少工程師用習慣了jlink除錯arm核心的mcu 芯唐的m0用jlink怎麼玩呢?芯唐微控制器的燒錄介面有五條線 分別是,vcc,dat,clk,rst,gnd 圖 1 jink的燒錄介面jtag有20個腳如圖 2...
Cortex M0 核心的處理器架構簡介
cortex m0處理器具有32位系統匯流排介面,以及32位位址線,即有4gb的位址空間。系統匯流排基於ahb lite高階高效能匯流排協議。外設匯流排基於apb高階外設匯流排協議,通過乙個轉換橋連線到ahb上。這只是cortex m0核心的大概模式,cortex m0 的儲存器系統與cortex ...