Cortex M0系列 紅外調製38kHz輸出

2021-08-23 12:10:29 字數 1229 閱讀 4070

談到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_oc4inittim_oc4preloadconfig如果用的第1通道就是tim_oc1inittim_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 ...