专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

STM32之keil MDK下建立第一个工程

作者:忙碌的小姚   来源:忙碌的小姚   点击数:  更新时间:2014年06月10日   【字体:

一、使用固件库建立一个工程

我打算先从软件编程学起,以前用过KEIL IARIAR我比较熟悉,因为参加电子设计竞赛的时候,就是用它编程MSP430程序的。但我还是选择了KEIL,也许因为资料比较多,或者别的吧,我没分析过KEIL IAR代码效率如何,因为这不是我现在要考虑的,软件都只是工具而已。

我去百度搜索了几篇如何在KEIL MDK环境下建立STM32工程,加上自己的实践。我也把我的初学者步骤贴出来。

1了解STM32F103的固件库

我在网上下了STM32F103的固件库-----stm32f10x_stdperiph_lib 3.5V版的,里面内容如图所示,据说STM32F103STM32F101都能用。


 

2、创建第一个工程

   1.新建一个文件夹取名如 first_project,也可以建在桌面。


     2.在里面新建 CMSIS libraries ,Libaries List(用于链接的) Obj(工程文件) output  (输出hex

     件)User 件夹;

 

     3.  将固件库里 Libraries--->STM32F10x_StdPeriph_Driver 下的 inc src 文件夹复

          制到fisrt_project 文件夹下的libraries 里;

 

        将固件库里 Libraries--->CMSIS--->CM3--->CoreSupport文件夹里面的 core_cm3.c

          core_cm3.文件复制到我们新建的fisrt_project 文件夹下的CMSIS 里;

 

        将固件库里 Project---->STM32F10x_StdPeriph_Template(这个文件家里有KEIL

          IAR建好工程的模板里的stm32f10x_conf.h stm32f10x_it.c  ,

          stm32f10x_it.h  system_stm32f10x.c  四个文件 复制到我们新建的fisrt_project 

          文件夹下的User 里;

 

          如下图所示




4、打开keil uvision4 MDK 在菜单栏里点击project 选择 new uVision project  



5、保存工程名,选择Obj文件夹, 文件名为first_project ,不用加后缀格式,系统默认。


6、接下来会弹出让你选择器件的窗口,这里我们选择 STmicroelectronics 的 STM32F103C8


7、最后会弹出是否复制启动代码的对话框,选择YES


3、 接下来就是管理工程文件了

     1、在project窗口右键点击Tagert 选择 manage conponents 或者

 

     找到倒数第二个 品字形图标;

 

 

     2、在Groups 框下面将Groups1 重命名为startup ,同时添加CMSIS, Libraries, User;

 

        选择CMSIS Files框下将CMSIS文件夹的core_cm3.c添加进去; 

 

        选择LibrariesFiles框下将Libraries--->src文件下的所以文件都加进去添加进去;

 

        选择UserFiles框下将User文件下的所以文件都加进去添加进去;

 

  如下图所示: 


 

3、工程构架如下图所示:


 

4、编写main.c 和文件路径 

 

  1新建main.c 保存到User文件夹里,将其添加到User工程名下。

 

        #include "stm32f10x.h"

 

         int main(void)

{

  while(1)

{;}

}

 

  2、在project框下,右键点击Target 1,选择Options for Target target1 


 

     output 选项下,在create HEX file 前打上钩, 点击select Folder for Objects 选择输出文   

             件夹为 output文件夹; 

 

    Listing选项下,点击select Folder for Listings 选择链接文   

             件夹为 List文件夹;

 

    在C/C++选项下, define里 填入 USE_STDPERIPH_DRIVER,STM32F10X_MD 中间用英 

                 文的逗号;(一定要记得)

 

                   Include Paths 里,点击右边的文件路径框 ,选择相应的CMSIS,       

                 libraries 里的INC 和SRC 还有 User 

 

     也可以填绝对路径,比如:   C:\Users\Administrator\Desktop\STM32编程练习 

                                \fisrt_project\CMSIS  这样比较麻烦



 

 

 

   3、好了,这下开始编译链接:

  Error Warring;

   First_project 就建好了;万里长征的第一步,总算走出去了。

 4、总结:关键是Option for target 的设置,包括output listing,和C/C++,尤其是C/C++这个选项里一定要设置对。

      DefineUSE_STDPERIPH_DRIVER,STM32F10X_MD,这是预定义的两个宏定义。

      stm32f10x.h这个头文件里搜索 USE_STDPERIPH_DRIVER 有这么一段

            #ifdef USE_STDPERIPH_DRIVER

            #include "stm32f10x_conf.h"

            #endif

     据说是定义控制了是否在应用中启用外设驱动。

stm32f10x.h这个头文件里搜索 STM32F10X_MD 

       STM32中密度器件

#ifdef STM32F10X_MD

ADC1_2_IRQn                18,     

USB_HP_CAN1_TX_IRQn        19,     

USB_LP_CAN1_RX0_IRQn       20,     

CAN1_RX1_IRQn              21,     

CAN1_SCE_IRQn              22,     

EXTI9_5_IRQn               23,     

      

         

      。      

#endif    可能是定义中断向量的值吧

 

      

就写到这里,才发现我自己做也许一个两个小时就能建好工程,但是要把写出来我却用了一个下午。为了大家跟我都尽快学会STM32,我会努力学习将成果与大家分享;

                                                          20131225

 

ps:

 自我感觉写得还是比较清楚,不懂的可以问我。另外可以去看一下李想的STM32的视频。

 

 理论够硬,才能走得更远。 有问题,私信我。

本文转自大侠 忙碌的小姚

关闭窗口

相关文章