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

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

我打算先从软件编程学起,以前用过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、工程构架如下图所示:


 

startup_stm32f10x_ld.s
startup_stm32f10x_md.s
startup_stm32f10x_hd.s

其中,ld.s适用于小容量 产品;md.s适用于中等容量产品;hd适用于大容量产品;
这里的容量是指FLASH的大小.判断方法如下:
小容量:FLASH≤32K
中容量:64K≤FLASH≤128K
大容量:256K≤FLASH

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、好了,这下开始编译链接:

   0 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    可能是定义中断向量的值吧

 

      


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值