keil5 新建 stm32項目 步驟


 

容易搞錯的一點

在manage project item中添加FWLIB中的src,在預編譯時,c/c++ 的include path中添加的時FWLIB中的inc


 

建立文件夾Demo_stm32,作為項目根目錄

 

在demo下,建立 OBJ,CORE,STM32F10x_FWLIB,USER,SYSTEM文件夾。

 

打開並拷貝\8,STM32參考資料\1,STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver下的inc,和 src 目錄到STM32F10x_FWLIB文件夾下

 

打開並拷貝\8,STM32參考資料\1,STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport下的 core_cm3.c 和 core_cm3.h 文件到 CORE

打開並拷貝 \8,STM32參考資料\1,STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 下的startup_stm32f10x_hd.s 文件到 CORE

打開並拷貝 \8,STM32參考資料\1,STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template下的 五個文件到USER(main.c,stm32f10x_conf.h,stm32f10x_it.c,stm32f10x_it.h,system_stm32f10x.c)

打開並拷貝 \8,STM32參考資料\1,STM32F1xx固件庫\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 文件夾下三個文件拷貝到USER(stm32f10x.h,system_stm32f10x.c,system_stm32f10x.h)

 

USER下一共有7個C 文件(除了項目文件)


 

 

打開keil5,右鍵點擊target,Manage Project Items 

新建groups,USER,CORE,FWLIB,

在USER下,添加 main.c ,stm32f10x_it.c , system_stm32f10x.c

在CORE下添加 core_cm3.c , startup_stm32f10x_hd.s

在FWLIB下添加STM32F10x_FWLIB下的src下的所有文件。

 


 

打開魔術棒

在output文件 選擇輸出的目錄為OBJ,然后點選生成hex

在c/c++   Preprocessor Symbols   define里添加 STM32F10X_HD,USE_STDPERIPH_DRIVER  , 在 include paths 里,添加 ..\CORE  ..\USER  ..\STM32F10x_FWLIB\inc 

在debug ,Use ST-Link Debugger 點擊setting,選擇一些ST-LINK/V2 讓其生成serial號,PORT選擇SW,在Flash Download中勾選擇 Reset and Run 


 

若出現中文亂碼,

在edit中選擇configuration,Encoding選擇 GB2312

在main函數中,因為是評估頭文件,可以替換下如下的代碼,用於正點原子的戰艦開發板

#include "stm32f10x.h"


/************************************************
 ALIENTEK 戰艦STM32F103開發板實驗0
 工程模板
 注意,這是手冊中的新建工程章節使用的main文件 

 作者:正點原子 @ALIENTEK
************************************************/


 void Delay(u32 count)
 {
   u32 i=0;
   for(;i<count;i++);
 }
 int main(void)
 {    
  GPIO_InitTypeDef  GPIO_InitStructure;
     
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|
  RCC_APB2Periph_GPIOE, ENABLE);        //使能PB,PE端口時鍾
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                //LED0-->PB.5 端口配置
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      //推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     //IO口速度為50MHz
  GPIO_Init(GPIOB, &GPIO_InitStructure);                 //初始化GPIOB.5
  GPIO_SetBits(GPIOB,GPIO_Pin_5);                    //PB.5 輸出高
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                //LED1-->PE.5推挽輸出
  GPIO_Init(GPIOE, &GPIO_InitStructure);                 //初始化GPIO
  GPIO_SetBits(GPIOE,GPIO_Pin_5);              //PE.5 輸出高       
  while(1)
    {
        GPIO_ResetBits(GPIOB,GPIO_Pin_5);
        GPIO_SetBits(GPIOE,GPIO_Pin_5);
        Delay(3000000);
        GPIO_SetBits(GPIOB,GPIO_Pin_5);
        GPIO_ResetBits(GPIOE,GPIO_Pin_5);
        Delay(3000000);
    }
 }

 


 

 

便於開發,加入幾個工具類

拷貝 \4 程序源碼\2,標准例程-庫函數版本\實驗0-1 Template工程模板-新建工程章節使用\SYSTEM 下所有的文件夾,至 SYSTEM下,共三個文件,delay,sys,usart

在Manage Project Items 里添加 SYSTEM  groups,然后給SYSTEM添加文件,把這3個文件都添加上 

在c/c++ 編譯里,添加編譯頭目錄,include path,添加這3個文件頭


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM