您現在的位置是:首頁 > 手機遊戲首頁手機遊戲

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

簡介使用 Keil uVision 和 ST-Link 建立程式並將其燒錄到 STM32第 1 步:-安裝軟體工具 STM32Cube MX第 2 步:-開啟 >> STM32Cube MX,選擇Start My project f

stlink和usb to ttl;stm32怎麼燒錄程式

採用ARM Cortex M架構的STM32微控制器因其特性、成本和效能而在許多應用中得到廣泛應用。在之前的教程中,我們已經使用Arduino IDE程式設計了STM32F103C8。

使用Arduino IDE程式設計STM32很簡單,因為有很多現成庫可供我們直接使用,我們只需要在程式中新增這些庫。這是一個簡單的過程,就像操作一個黑盒子,雖然能實現功能,但是不能深入瞭解ARM處理器,不利於微控制器的進階。

現在我們進入下一個程式設計階段,叫做ARM程式設計。透過這一點,我們不僅可以改進程式碼的結構,還可以透過不使用不必要的庫來節省記憶體空間。

STMicroelectronics推出了一款名為STM32Cube MX的工具,它可以根據外圍裝置和選定的STM32板生成基本程式碼。所以我們不需要擔心基本驅動程式和外圍裝置的編碼。此外,生成的程式碼可以在Keil uVision中根據需要進行編輯。最後,使用STMicroelectronics的ST Link程式設計器將程式碼燒錄到STM32中。

在本教程中,我們將學習如何使用Keil uVision和STM32CubeMX程式設計STM32F103C8,透過一個簡單的專案,將按鈕和LED連線到STM32F103C8板,使用STM32Cube MX生成程式碼,然後使用Keil uVision編輯並上傳程式碼到STM32F103C8。

下面,我們瞭解ST-LINK

程式設計器

和STM32CubeMX軟體工具。

ST-LINK V2

ST-LINK/V2是用於STM8和STM32系列的線上偵錯程式和程式設計器。我們可以使用這個ST-LINK將程式碼上傳到STM32F103C8或其他STM8&STM32微控制器。

單線介面模組(SWIM)和JTAG/序列線除錯(SWD)介面用於與STM8或STM32微控制器通訊。由於STM32應用程式使用USB全速介面與Atolic、IAR、Keil或整合開發環境進行通訊,因此我們可以使用該硬體對STM 8和STM32微控制器進行程式設計。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

上圖是ST-LINK V2,支援全系列STM32 SWD除錯介面,一個簡單的4線介面(包括電源),快速穩定。它有一個指示燈,用於觀察ST-LINK的工作狀態。正如我們在上圖中所看到的,pin名稱清晰地標記在外殼上。它可以與Keil軟體連線,透過該軟體,程式可以上傳到STM32微控制器。

現在,我們來看看如何使用ST-LINK程式設計器STM32微控制器進行程式設計。下圖顯示了ST-LINK V2模組的引腳。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

注意:第一次連線ST-Link時,可能需要安裝裝置驅動。在此連結中找到你的作業系統的裝置驅動程式。(

https://www。st。com/en/development-tools/stsw-link009。html

STM32CubeMX

STM32CubeMX工具是STMicroelectronics STMCube的一部分。該軟體工具可以減少開發工作量、時間和成本,使開發變得容易。

STM32Cube是一種圖形化軟體配置工具,允許使用圖形嚮導生成初始化C程式碼。該程式碼可用於各種開發環境,如keil uVision、GCC、IAR等。您可以從以下連結下載該工具。

https://www。st。com/en/development-tools/stm32cubemx。html

電路圖和連線

下面是使用按鈕將LED 與 STM32 板連線的簡單電路圖。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

ST-LINK V2

STM32F103C8

之間的連線

這裡的 STM32 Blue Pill 板由連線到計算機 USB 埠的 ST-LINK 供電。所以我們不需要單獨給STM32供電。下表顯示了 ST-Link 和 STM32F103C8 板之間的連線。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

LED &

按鈕

LED 的陽極連線到 STM32F103C8 板的引腳 PC13,陰極接地。

連線一個按鈕,為STM32F103C8板PA1引腳提供訊號輸入。按鈕的一端接地,另一端接引腳PA1。還要在PA1引腳接一個10k的上拉電阻器,避免鬆開按鈕時,引腳可能會在沒有任何輸入的情況下浮動。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

使用 Keil uVision 和 ST-Link 建立程式並將其燒錄到 STM32

第 1 步:-安裝軟體工具 STM32Cube MX

第 2 步:-開啟 >> STM32Cube MX,選擇Start My project from MCU

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 3 步:-搜尋STM32F103C8

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 4 步:-在出現的結果列表中雙擊STM32F103C8T6,進入晶片管腳配置介面,單擊晶片上的某個引腳選擇需要配置的功能:

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 5 步:-對於本次專案,我們選擇PA1 作為 GPIO INPUT,PC13 作為 GPIO OUTPUT 和 SYS 除錯作為 SERIAL WIRE,這裡只連線 ST-LINK SWCLK 和 SWDIO 引腳。選定和配置的引腳以綠色顯示。您可以在下圖中看到這一點。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 6 步:-接下來在System view選項卡下,為我們選擇的引腳設定 GPIO 引腳配置。按照下圖步驟,設定引腳label。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 7 步:-。配置時鐘樹

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 8 步:-接著在Project Manager設定專案引數,因為我們使用的是Keil uVision5,因此ToolChain/IDE選擇MDK-ARM,Mini Version根據自己的Keil uVision 選擇。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 9 步:-點選Code Generator,按下選擇:

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 10 步:-設定好後,點選GENERATE CODE 生成程式碼。首次生成需要下載相關依賴包,點選Yes。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 11 步:-下載完成後,就可以生成我們需要的程式碼了。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 12 步:-點選Open Project ,在Keil中開啟生成的專案(注意Keil 是MDK版本)。首次使用,

Keil uVision

自動彈出下載安裝

STM32F103C8

所需的軟體包。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

在main中把wihle改成:

while (1)

{

if(HAL_GPIO_ReadPin(BUTTON_GPIO_Port,BUTTON_Pin)==0)

{

HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,1);

}

else

{

HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,0);

}

}

可能還需要在gpio。c中修改PA1 和 PC13的相關初始化程式碼:

/*Configure GPIO pin Output Level */

HAL_GPIO_WritePin(GPIOC, LED_Pin|BUTTON_Pin,GPIO_PIN_RESET);

/*Configure GPIO pin : PC13 */

GPIO_InitStruct。Pin = LED_Pin;

GPIO_InitStruct。Mode = GPIO_MODE_OUTPUT_PP;

GPIO_InitStruct。Pull = GPIO_NOPULL;

GPIO_InitStruct。Speed = GPIO_SPEED_FREQ_LOW;

HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

/*Configure GPIO pin : PA1 */

GPIO_InitStruct。Pin = BUTTON_Pin;

GPIO_InitStruct。Mode = GPIO_MODE_INPUT;

GPIO_InitStruct。Pull = GPIO_NOPULL;

HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

第 13 步:-完成程式碼編輯後,單擊Options for Target,選擇選項卡下的Debug並選擇 ST-LINK 偵錯程式,然後點選Setting

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 14 步:-在Setting彈出的設定框中進行如下設定

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 15 步:-點選rebuild,編譯程式。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 16 步:-編譯完成後,把STM板的跳針Boot0跳到1一側,將 ST-LINK 與Stm32板練好先插入計算機,然後單擊load圖示或按 F8把程式碼上傳到 STM32F103C8。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

第 17 步:-上傳完成後,把Boot0跳回1的位置,給Stm32板上電,現在,當我們按下按鈕時,LED 亮起,當我們鬆開它時,LED 熄滅。

使用 Keil uVision 和 STM32CubeMX 對 STM32F103C8 進行程式設計

Top