历史上的今天

今天是:2024年09月27日(星期五)

正在发生

2019年09月27日 | STM32之keil MDK下建立第一个工程

发布者:脑力激荡 来源: eefocus关键字:STM32  keil  MDK  工程 手机看文章 扫描二维码
随时随地手机看文章

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

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


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


1、了解STM32F103的固件库

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


 

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.h 文件复制到我们新建的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 1 选择 manage conponents 或者

 

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

 

 

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

 

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

 

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

 

        选择User在Files框下将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:UsersAdministratorDesktopSTM32编程练习 

                                fisrt_projectCMSIS  这样比较麻烦



 

 

 

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

   0 Error , 0 Warring;

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

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

      Define:USE_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  keil  MDK  工程 引用地址:STM32之keil MDK下建立第一个工程

上一篇:如何建一个STM32F030工程模板(标准库版)
下一篇:关于STM32F2系列项目开发工程文件的建立

推荐阅读

全新MG07SCA 14TB硬盘驱动器助力基于SAS技术的云级别存储平台实现TCO目标 东京—硬盘机领导品牌东芝电子元件及存储装置株式会社今日宣布推出全新的企业级14TB[1]和12TB充氦封装SAS HDD产品。MG07SCA系列转速可达7,200rpm,拥有一个SAS 12Gbit接口[2],,采用高级格式扇区技术。这款产品采用行业领先的9碟充氦设计和传统磁记录技术,可以实现最佳的兼容性...
有网友在雪球上问步步高集团董事长段永平关于平均回报的问题。网友说:“在步步高的企业文化的使命中有一条“对股东:使其投入的股本有高于社会平均报酬的合理回报”。这里的“高于社会平均报酬”该如何理解,是一个思考方式还是说有什么计算逻辑?”段永平解释说:“其实就是我们有信心比平均回报好的意思。”网友看了段永平的解释仍然不理解,他追问“有...
digit报道,Counterpoint Research发布的最新智能手机市场报告显示,2020 Q2全球智能手机平均售价同比增长10%。与此同时,智能手机出货量同比下滑23%,创历史最高水平。整个智能手机行业预计将同比下降15%。报告指出,除了拉美地区,智能手机的价格几乎在所有地区都有所上涨,而拉美地区的价格同比下降了5%。包括印度在内的亚太地区同比增长11%,增幅最...
main.c文件#include <includes.h>#include <stdlib.h> #include <stdint.h>#include "bsp.h"//全局变量 定义unsigned int key;//函数声明void BSP_Init (void);/********************************************************************************************************** 名 称 :main* 功能描述 : 初始化STM32* 输入参数 : n...

史海拾趣

问答坊 | AI 解惑

专题综述文献———图像分割

专题综述文献———图像分割…

查看全部问答∨

LPC1114申请

您好!        我是玉林师范学院物信系电信082班的学生,最近了解了一下LPC1114的性价比,我想进一步的学习,希望能申请到该芯片来进行学习,谢谢!如果可以的话,可以发到我邮箱:mayi200805402224@126.com &n ...…

查看全部问答∨

我的keil怎么找不到77e58.h的头文件

我的keil怎么找不到77e58.h的头文件,谁有?能不能发我一个,我的邮箱是shenjuan@163.com…

查看全部问答∨

ce 4.2 下格式化CF卡 方法,代码

谁能指导一下啊。公司急用。最好有源码。我用c#开发。…

查看全部问答∨

为什么在WinCE6.0 R2中定制SDK时,Emulation选项卡中的选项都是灰的?

我想定制一个WinCE6.0的模拟器,可是在SDK的属性页中Emulation选项卡全部是灰的,也就是不可用,希望有人能指点一下。 …

查看全部问答∨

求教CE50.HTML VIEW(WEBVIEW.DLL)的使用?

CE5.0,有HTML VIEW(WEBVIEW.DLL)但不知如何使用这个控件,想做一个本地浏览网页文件的应用程序,pc机又没有这个控件不知如可下手,请高手帮助,谢谢!…

查看全部问答∨

AVR单片机嵌入式系统原理与应用实践

本书前几节介绍了AVR体系和结构,后面的几章专门介绍AVR单片机的工程应用。希望对大家有所帮助! [ 本帖最后由 鑫海宝贝 于 2011-5-16 08:51 编辑 ]…

查看全部问答∨

F2812编译时出错,大家给看看

程序编译时出现这个错误提示,可PARK_calc  已经定义了啊, 提示说的“main.obj”中没定义_PARK_calc 是什么意思?请大家指教! -------------------------------  DQ.pjt - Debug  ----------------------------- ...…

查看全部问答∨

LM3S FLASH当EEPROM 使用掉电后可以保存数据

LM3S FLASH当EEPROM 使用掉电后可以保存数据&nbsp; 有没有具休代码模块还是文档说明吗!!…

查看全部问答∨

威视锐ZYNQ开发板-ZingSK移植Ubuntu操作系统

一、概述此文档介绍了基于ZingSK运行Ubuntu的必要的步骤。此文档所有命令均是在Ubuntu12.04 x86_32操作系统下完成。 硬件平台:ZingSK开发套件开发环境:Windows7-32位、VMware 9.0 + Ubuntu 12.04、arm- xilinx- linux-gnueabi交叉编译环境 嵌入 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved