第十三屆藍(lán)橋杯嵌入式省賽


在看過題目后可知,大致要用到LCD、LED小燈、按鍵、串口、定時(shí)器PWM等。

一、首先大致將需用到的GPIO、外設(shè)等使用CubeMX初始化配置
(1)按鍵配置


????????根據(jù)原理圖可知PB0、PB1、PB2、PA0對應(yīng)四個(gè)按鍵,直接將這四個(gè)IO口配置為輸入

(2)PWM輸出配置


? ? ????已知PA1輸出,點(diǎn)擊該P(yáng)in口發(fā)現(xiàn)有定時(shí)器2的通道2


????????由于已將該芯片配置系統(tǒng)時(shí)鐘為80MHz,后再1分頻將APB1總線也設(shè)為80MHz,定時(shí)器2掛載在該總線上,所以要輸出1KHz頻率的方波,則80/(Pre+1)/(ARR+1)=1K,這里我將Pre設(shè)置為79,ARR設(shè)置為999。
????????為了后續(xù)便于測試PWM輸出是否正確,開啟定時(shí)器4,使用輸入捕獲檢測該輸出


(3)開啟串口,設(shè)置參數(shù)


??????????由于需要接收數(shù)據(jù)進(jìn)行分析,我們直接開啟串口中斷,簡單方便

****Tips:
????

(4)設(shè)置為輸出


同理,將PC8~PC15、PD2設(shè)置OUTPUT,其余默認(rèn)即可
考慮到LED實(shí)現(xiàn)需計(jì)時(shí)等功能,我們再開啟定時(shí)器6開啟中斷,配置為1ms進(jìn)入一次。

二、各個(gè)功能代碼的實(shí)現(xiàn)
(1)LED代碼的實(shí)現(xiàn)


*此處LED2的閃爍不要使用HAL_GPIO_TogglePin()這個(gè)函數(shù)
?由于G431的屏幕的IO與LED的IO復(fù)用,若使用該函數(shù)會導(dǎo)致LED的小燈狀態(tài)不確定
(2)按鍵部分代碼





(3)LCD屏幕
????直接將官方給的驅(qū)動移植到工程中使用

(4)定時(shí)器功能實(shí)現(xiàn)



(5)串口功能
????



三、測試輸出頻率占空比是否正確



四、演示視頻
? ? 在一系列調(diào)試修改后,功能實(shí)現(xiàn)視頻如下(屏幕下方顯示占空比與頻率的代碼在測試后注釋即可):
