通過本文帶大家零基礎使用STM32F407VET6單片機進行E22-400T22S模塊編程并進行簡單的通信,當然如果學會了,也可以舉一反三應用于E22、E220、E32所有模塊上。
一
STM32環境零基礎搭建
本次實驗將會使用到的軟件是Keil和STM32CubeMX,沒有這兩個軟件沒有請在網上自行下載。本章節零基礎手把手教會你搭建最快捷、最簡單的STM32代碼運行環境。
1.1 keil的芯片固件包下載與安裝
本文使用到的MCU是STM32F407VET6,對于Keil來說需要提前安裝好相應的固件包,固件包下載地址是https://www.keil.arm.com/packs/stm32f4xx_dfp-keil/,下載好之后,雙擊運行,默認安裝即可。
1.2 通過STM32CubeMX生產代碼文件
打開STM32CubeMX軟件,點擊如圖1.1的“序號1”新建一個項目,然后出現圖1.2這個界面,先在“序號1”輸入框中輸入STM32F407VET6,然后選中“序號2”的芯片,最后點擊“序號3”開始新工程的搭建。

圖1.1
圖1.2
進去芯片配置界面,首先配置SWD燒錄口,以便于程序的燒入和Debug調試,如圖1.3所示,點擊“System Core”選項卡里面的“序號1”SYS,然后找到“序號2”的選擇框,我們選擇“Serial Wire”,這樣程序燒錄引腳就配置完成。
接著見圖1.4所示,在“System Core”選項卡里面找到“序號1”RCC,選擇單片機的時鐘源,點擊“序號2”的下拉菜單,選擇“Crystall/Ceramic Resonator”晶振,這里只配了高速時鐘,如果需要低速時鐘的話,可以自己配置下面的選項卡“High Speed Clock(LSE)”。

圖1.3

圖1.4
配置LED的GPIO,該引腳用于發送接收時候狀態的指示。本文使用到的單片機控制LED 的GPIO口是PC13,這里選擇你自己單片機控制LED的IO口引腳,本文就以PC13口作為示例。如圖1.5所示,首先找到并點擊“序號1”的PC13芯片引腳,選擇“GPIO_Output”,接下來點擊“序號3”就會彈出下面的選擇框,如“序號4”所示,可以參考“序號4”的配置,這樣LED的GPIO口就配置完成。

圖1.5
配置AUX的GPIO,該引腳是反饋E22模塊的狀態,AUX為高電平說明正常,本文使用的的單片機IO口為PC1,操作如圖1.6所示,首先點擊“序號1”,然后選擇“序號2”模式設為輸入模式,然后點擊“序號3”,緊接著選擇“序號4”,最后點擊“序號5”,最后按照“序號6”的內容進行選擇。

圖1.6
配置M0的GPIO,該引腳是接E22模塊的M0引腳,用于控制E22的模式,本文使用的的單片機IO口為PA1,操作如圖1.7所示,首先點擊“序號1”,然后選擇“序號2”模式設為輸出模式,然后點擊“序號3”,緊接著選擇“序號4”,最后點擊“序號5”,最后按照“序號6”的內容進行選擇。

圖1.7
配置M1的GPIO,該引腳是接E22模塊的M1引腳,用于控制E22的模式,本文使用的的單片機IO口為PD14,操作如圖1.8所示,首先點擊“序號1”,然后選擇“序號2”模式設為輸出模式,然后點擊“序號3”,緊接著選擇“序號4”,最后點擊“序號5”,最后按照“序號6”的內容進行選擇。

圖1.8
接下來配置USART串口,操作如圖1.9所示,選擇“序號1”,點擊“序號2”,選擇“USART1”,然后點擊“序號3”的菜單下拉框,選擇“Asynchronous”,然后點擊“序號4”彈出選擇框,找到“序號5”,把波特率改為“9600 Bit/s”,這樣串口通信就配置成功。
為了實現USART串口中斷接收,操作如圖1.10所示,選擇“序號1”,然后勾選“序號4”,使能串口中斷。
圖1.9
圖1.10
現在來配置系統時鐘樹,操作如圖1.11所示,點擊“序號1”的“Clock Configuration”,然后在“序號2”的框中改為8,我們選擇的是8MHz的晶振,這里按照自己單片機的實際晶振可做修改,然后點擊“序號3”,再點擊“序號4”,最后把“序號5”的框中改為72,這里配置的系統時鐘頻率是72MHz,也可以自己選擇配置成自己想要且合理的系統時鐘頻率。

圖1.11
最后來到“Project Manager”,操作如圖1.12所示,先點擊“序號1”,然后在“序號2”的框中為自己的工程文件取名字,筆者這里取名為“STM_T”,再在“序號3”中選擇自己工程文件的存儲位置,最后在選擇框“序號4”中選擇“MDK-ARM”。
最后一步,操作如圖1.13所示,我們選擇“序號1”,然后點擊“序號2”,這里選項的意思是該工程文件只生成必要的函數庫文件,再勾選上“序號3”,最后選擇點擊“序號4”完成工程代碼的生成。

圖1.12

圖1.13
二
單向發送代碼
2.1 代碼編寫
雙擊打開keil工程,操作如圖2.1所示,按照如下圖2.1所示路徑,點擊“序號1”keil的運行程序,最后打開的頁面應該是如圖2.2所示。

圖2.1

圖2.2
實現發送信息的功能。操作如圖2.3所示,點擊“序號1”的mian.c文件,然后在“序號2”框出來位置,寫入“序號3”的代碼,char msg[]= "Hello,Ebyte!\r\n"; ;然后進行圖2.4的操作,點擊“序號1”的mian.c文件,然后在“序號2”框出來位置,寫入“序號3”的代碼,#include "string.h";最后進行圖2.5的操作,點擊“序號1”的mian.c文件,然后在“序號2”框出來位置,寫入“序號3”的代碼:
HAL_UART_Transmit(&huart1,(uint8_t*)msg,strlen(msg),1000);
HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);
HAL_Delay(1000);

圖2.3

圖2.4

圖2.5
2.2 程序燒錄下載
準備好單片機和燒錄器,本文使用的燒錄器是STlink,把STlink與單片機需要燒錄的引腳連接好,操作如圖2.5所示,點擊“序號1”的魔術棒,然后點擊“序號2”,在“序號3”左邊的選擇框選ST-Link Debugger,然后選“Settings”,接著跳出一個界面,看“序號4”查詢是否檢測到芯片,然后對比“序號5”進行修改,點擊“序號6”確定。
按照圖2.7進行程序的下載,先點擊“序號1”進行編譯,再點擊“序號2”進行程序的下載。

圖2.6

圖2.7
三
實操
3.1 實物準備
準備好兩個E22模塊,一個單片機,一個串口工具,若干杜邦線,本文實物準備如圖3.1所示。通過串口工具打開E22相應的上位機,上位機在官網下載,通過上位機先把模塊都復位,如圖3.2所示。

圖3.1

圖3.2
3.2 連線
E22模塊與單片機連線,連線是根據自己配置的引腳進行連線,本文提供的連線如表3.1所示,連接好之后給單片機上電。
表3.1
另外一個E22與串口工具的連線也類似,連接好之后,給串口助手插入電腦,打開串口助手,打開對應COM口,接收的數據信息如圖3.3所示。至此,E22模塊的單向傳輸功能已實現。
圖3.3
-
單片機
+關注
關注
6067文章
44969瀏覽量
649505 -
通信
+關注
關注
18文章
6198瀏覽量
137681 -
STM32
+關注
關注
2292文章
11029瀏覽量
363979
發布評論請先 登錄
評論