開發板:正點原子STM32F4探索者 (2019-08-10 22:04:39) 開發環境:MDK5.28.0.0 + STM32CubeMX5.3.0 + STM32CubeF4 V1.24.0 內容:使用STM32Cube配置LED0和UART1,實現LED0閃爍和UART1發送 STM32Cu ...
開發板:正點原子STM32F4探索者 (2019-08-10 22:04:39)
開發環境:MDK5.28.0.0 + STM32CubeMX5.3.0 + STM32CubeF4 V1.24.0
內容:使用STM32Cube配置LED0和UART1,實現LED0閃爍和UART1發送
STM32CubeMX選擇晶元後界面。左側欄為功能列表,配置相應的功能打開列表,會有詳細功能名稱;右側為ST晶元模型,引腳分佈。首先,應該配置晶元的時鐘來源——晶元的時鐘很重要,根據硬體實際配置時鐘來源:打開 System Core 欄目下的RCC,即為晶元時鐘配置。
RCC 配置界面。以外部時鐘為例,STM32CubeMX中外部時鐘配置可選類型為 Disable 、 BYPASS Clock Source(旁路時鐘源) 、Crystal/Ceramic Resonator(石英/陶瓷 晶振) 三種類型。參考手冊中介紹 HSE 如下圖:
外部時鐘源即為旁路時鐘源,只需要外部提供時鐘接入OSC_IN引腳,OSC_OUT引腳懸空;諧振器即相當於石英/陶瓷 晶振,OSC_IN 與 OSC_OUT引腳都要連接。開發板使用的是晶振,所以RCC的HSE選項設置為Crystal/Ceramic Resonator。時鐘的來源確定後需要配置晶元內部的多個時鐘線,進入Clock Configuration頁面,可以根據時鐘樹直觀地配置時鐘。下圖所示為開發板時鐘配置,開啟外部時鐘8MHz,PLL時鐘來源於HSE,經過鎖相環的分頻與倍頻後得到168MHz時鐘,System Clock Mux時鐘來源選擇PLLCLK,AHB分頻器設置1分頻(不分頻),得到168MHz的主頻時鐘,HCLK = 168MHz。
時鐘配置完成以後,可以在 Connectivity 欄開啟UART功能,USART1可以開啟的模式有Asynchronous——非同步通訊、synchronous——同步通訊、Single Wire(Half-Duplex)——單線(半雙工)通訊,此處配置為非同步通訊。
此外,這些功能也可以通過右側的ST晶元模型直接在管腳設置。這種設置方法只需要我們點擊對應的管腳,就會列出該管腳對應的功能,點擊選擇即可。如果我們需要啟用模擬,還要自己配置相應的引腳。如果未配置模擬功能引腳,使用模擬器會發生錯誤。
功能配置完成無誤後,就可以生成代碼了。點擊進入Project Manager界面,點擊Project,在 Project Setting 框里設置Project Name、Project Location,Toolchain/IDE選項為設置生成工程的IDE類型,常用的是MDK-ARM V5(KEIL)和 EWARM V7(IAR)兩種。設置完成後點擊GENERATE CODE 即可生成工程代碼。
註意:工程中尤其註意時鐘這一塊,使用別人的工程要註意 SystemClock_Config(void) 函數對時鐘的配置是否與自己的硬體符合,stm32fxxx_hal_conf.h文件里是否開啟所需要功能的巨集定義module,HSE_VALUE 、HSI_VALUE的定義值是否與自己硬體時鐘大小一致!!!
/***************************************未完待續******************************************/