最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

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

2023-03-02 19:42 作者:我是綠帽駿  | 我要投稿


硬件框架圖
功能需求



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



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

(1)按鍵配置

按鍵具體實(shí)現(xiàn)需求
原理圖按鍵部分

????????根據(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

PA1可實(shí)現(xiàn)的功能
配置定時(shí)器2通道2即PA1引腳輸出1KHz的方波

????????由于已將該芯片配置系統(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,使用輸入捕獲檢測該輸出

使用定時(shí)器4輸入捕獲功能檢測輸出波的參數(shù)
開啟定時(shí)器中斷


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

串口具體要求


串口配置為9600波特率


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

開啟串口中斷

****Tips:

????

如果在配置欄中直接開啟的串口需在芯片的圖形界面配置中將TX、RX改為PA9、PA10



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

LED需求
LED部分原理圖

同理,將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)

LED1
LED2

*此處LED2的閃爍不要使用HAL_GPIO_TogglePin()這個(gè)函數(shù)

?由于G431的屏幕的IO與LED的IO復(fù)用,若使用該函數(shù)會導(dǎo)致LED的小燈狀態(tài)不確定


(2)按鍵部分代碼

按鍵檢索
按鍵功能
具有消抖功能并可檢測按鍵是按下還是彈起狀態(tài)
判斷當(dāng)前是否為輸入界面且按鍵是否彈起,此處我加unKey_Down和unKey_Val的判斷是避免一個(gè)按鍵按下未松手再按另一個(gè)造成判斷錯誤的問題
按鍵4按下抬起后,若輸入密碼與當(dāng)前設(shè)置密碼一致則改變重裝載值,即改變頻率(80MHz/(79+1)/(499+1)=2KHz),再重新設(shè)置占空比



(3)LCD屏幕

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

兩個(gè)界面的顯示實(shí)現(xiàn)


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

定時(shí)器6每1ms進(jìn)入一次中斷,判斷密碼輸入后的狀態(tài)并進(jìn)行相應(yīng)的操作
定時(shí)器4輸入捕獲計(jì)算占空比與頻率
main函數(shù)中需開啟定時(shí)器



(5)串口功能

????

重寫c庫的printf便于調(diào)試(魔術(shù)棒勾選Microlib)
串口中斷回調(diào)函數(shù),一次接收7個(gè)字節(jié)數(shù)據(jù)然后判斷是否符合要求(使用ASCII碼),每次接受完清除字符數(shù)組緩存,并再次開啟串口接收中斷



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

PA11為輸入采集通道,打印輸入捕獲計(jì)算所得的結(jié)果,與需求一致,默認(rèn)狀態(tài)1KHz,50%占空比
輸入密碼正確結(jié)果


四、演示視頻

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




第十三屆藍(lán)橋杯嵌入式省賽的評論 (共 條)

分享到微博請遵守國家法律
寻乌县| 曲靖市| 岑巩县| 汾西县| 三原县| 冕宁县| 文水县| 玉田县| 西贡区| 个旧市| 阳东县| 无棣县| 本溪市| 乐东| 大埔县| 邹平县| 姚安县| 宜城市| 建湖县| 武清区| 武定县| 泰宁县| 库尔勒市| 罗定市| 金寨县| 长治县| 盐源县| 余江县| 西乡县| 桐城市| 昆明市| 通辽市| 陆河县| 乡城县| 延庆县| 开封县| 宿迁市| 渝北区| 乐都县| 蓬溪县| 黄陵县|