一、新建項目文件夾
-
在桌面創建項目文件夾,用於存放工程,命名為“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