STM32新建模板之韌體庫
一、新建專案資料夾
-
在桌面建立專案資料夾,用於存放工程,命名為“stm32f10x_project”
-
在專案資料夾中建立3個資料夾,分別命名為:CMSIS、OUTPUT、STM32F10x_FWLib、USER,並在OUTPUT檔案下建立Objects、Listings檔案,在CMSIS檔案下建立startup檔案
名稱 作用 CMSIS 系統檔案 OUTPUT 編譯生成的相關檔案 STM32F10x_FWLib stm32相關原始碼和標頭檔案 USER 使用者程式碼 -
建立README檔案
建議每個專案都建立README.txt或README.md檔案,用於說明專案的相關資訊,便於別人閱讀,建議養成良好的習慣。
二、拷貝專案檔案
通過購買開發版時提供的專案案例進行拷貝,這裡以“STM32F103C8T6例程”為例
-
拷貝core_cm3.c、core_cm3.h、stm32f10x.h、system_stm32f10x.c、system_stm32f10x.h檔案到CMSIS目錄下
-
拷貝啟動檔案“startup_stm32f10x_hd.s”到CMSIS\startup目錄下
-
拷貝stm32相關原始碼和標頭檔案,將案例中FWlib檔案下的inc、src資料夾拷貝到STM32F10x_FWLib目錄下
-
將案例中USER檔案下的main.c、stm32f10x_conf.h、stm32f10x_it.c、stm32f10x_it.h檔案拷貝到USER目錄下
三、建立工程專案
-
開啟Keil軟體,建立專案,專案名為STM32F10x_Temp
-
新增GROUP,新增四個GROUP,並改名為startup、STM32F10x_FWlib、CMSIS、USER
-
為每個GROUP新增檔案
- startup,將檔案startup_stm32f10x_hd.s新增到startup下
- STM32F10x_FWlib,將檔案stm32f10x_rcc.c、stm32f10x_gpio.c新增到STM32F10x_FWlib下
注意:這裡新增需要的庫檔案即可,因為我只用到時鐘和GPIO庫檔案,所以我只添加了兩個檔案,當然也可以全部新增
- CMSIS,將檔案core_cm3.c、system_stm32f10x.c檔案新增到CMSIS下
- USER,將檔案main.c、stm32f10x_it.c檔案新增到USER下
- 新增完成後如下圖所示:
- 設定編譯檔案的輸出路徑
- Objects輸出設定
- Listings設定
-
設定預設編譯版本
-
設定標頭檔案路徑
-
設定編譯器
在Define中填入內容:STM32F10X_HD,USE_STDPERIPH_DRIVER
四、編譯
- 將main.c檔案中的內容全部刪除,替換成一下內用
#include "stm32f10x.h"
/*************** 配置LED用到的I/O口 *******************/
void LED_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能PC埠時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; //選擇對應的引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PC埠
GPIO_SetBits(GPIOB, GPIO_Pin_12 ); // 關閉LED
}
void Delay(__IO u32 nCount)
{
for(; nCount != 0; nCount--);
}
int main(void)
{
LED_GPIO_Config(); //LED 埠初始化
while (1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_12);
Delay(0x200000);
GPIO_ResetBits(GPIOB,GPIO_Pin_12);
Delay(0x200000);
}
}
-
編譯程式
-
編譯完成後下載執行,觀察現象。到此專案模板已經建立完成,以後需要編寫程式時只需要使用這裡建立的模板直接開發即可。
參考文獻
stm32新建立一個工程:https://blog.csdn.net/weixin_42490436/article/details/90751687
如本部落格的內容侵犯了你的權益,請與以下地址聯絡,本人獲知後,馬上刪除。同時本人深表歉意,並致以崇高的謝意! [email protected]