您好,一、安装STM32库 将下载后的stm32f10x_stdperiph_libzip解压后得到三个文件夹分别是:"Libraries"、"Project"、"Utilities"将这3个目录复制到"Keil uVision4"的安装目录,和目录中的文件覆盖合并。二、新建工程 1、打开"Keil uVision4",在Project菜单中选择新建工程,选择工程要保存的位置,在d出的“Select Device for target”的对话框中选择使用的STM32单片机的型号如“STM32F103C8”,点确定,然后在d出的“Copy startup code”的对话框中点选"NO"
2、在Project“Target 1”上点选右键菜单“Option for target target1中设置相关参数”在[Output]选项卡中点选“Create HEX file”,点"Select folder for objects"设置临时生成的obj文件的存放目录,当然也可以不选择;
3、在[C/C++]选项卡的"Preprocessor Sysmbols"的Define框中做如下定义:USE_STDPERIPH_DRIVER,STM32F10X_MD
其中USE_STDPERIPH_DRIVER表明要使用ST提供的库,在"system_stm32f10xc"文件中包含的"stm32f10xh"文件中有如下定义:
#ifdef USE_STDPERIPH_DRIVER #include "stm32f10x_confh"#endif在[C/C++]选项中添加的USE_STDPERIPH_DRIVER宏就是这个作用,用来包含"stm32f10x_confh"这个文件被称为"Library Configuration file"用来配置你需要使用到库的那些文件的,例如需要使用到GPIO就应在在这个文件中加上#include "stm32f10x_gpioh"这个文件可以在STM32库的给出的例程中找得到(C:\Keil\ARM\Project\STM32F10x_StdPeriph_Examples)另外还需要在例程中复制"stm32f10x_itc"和"stm32f10x_ith"这2个文件,这2个文件时用来完成STM32中重中断服务程序的将一下三个文件复制到自己工程的user目录下供以后使用:"stm32f10x_confh"、"stm32f10x_itc"、"stm32f10x_ith"STM32F10X_MD 表明使用的是STM32F10X系列的CPU而该CPU的Flash代码密度是中等(Medium-density devices)这个和使用的CPU相关的查阅CPU的手册就可以得到。
然后在该选项卡的下方的"Include Paths"中设置include使用的路径等,如下图所示:其中\user路径是用来保存自己定义的头文件的路径4、[Debug]选项卡选择使用"Cortex-M/R J-Link/J-Trace",然后点"Settings"按钮在新打开的对话框中选择[Flash Download]选项卡点"Add"按钮添加编程使用的Flash,在本例中选用的CPU是STM32F103C8,其Flah为Medium-density使用片上的Flash型号为"STM32F10X Med-density Flash On-chip-Flash 128K",最终点OK保存设置。5、[Utilities]选项卡中的"Use Target Device for Flash Programing"要选择和[Debug]选项卡中一样的调试器"Cortex-M/R J-Link/J-Trace";6、然后再次在左侧的"Target 1"上点选右键,在菜单中选择"Manger Components"然后在"Project components"选项卡的"Group"中新建3个组名称分别为"user"、"libs"、"cmsis"1、 分别用来保存用户自己的C文件、stm32f10x_stdperiph_lib的库、和cortex-m3的启动文件等。
users:
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\ system_stm32f10xc (stm32f10x_itc该文件定义各种中断的中断服务函数)
libs:
Keil\ARM\ Libraries\ STM32F10x_StdPeriph_Driver\src\
cmsis:
Keil\ARM\ Libraries\ CMSIS\ CM3\ CoreSupport\core_cm3c
Keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10xc
keil\ARM\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm\startup_stm32f10x_mds
(该文件和CPU的Flash的代码密度相关,本例中的STM32F103C8是Medium-density故选用xxx_mds)
在使用STM32的固件库的时候,需要往工程中添加使用到的功能的对应源文件,比如:stm32f10x_gpioc等等,一个个添加很麻烦不说,每次在rebuild的时候都要编译这些基本不变的文件而通过使用库则可以解决这些问题,首先只需添加一次库文件,第二Rebuild的时候只编译我们自己写的源文件创建库的过程(IAR中):新建一个DLib工程,把stm32f10x_xxxc这样的文件和对应头文件全部复制到工程文件夹下(不复制也可以),然后添加进去,还有core_cm3c, miscc, system_stm32f10xc, 这些都添加进去(注意:不要添加h头文件,这和KEIL是不一样的,IAR里不用添加头文件,只需要源文件里#include就行了)s启动文件则可以根据实际需要添加,当然你也可以每种型号都分别创建一个对应的库然后在实际工程中根据不同的片子选择不同的库添加进去后,打开工程属性设置general option:target属性框里选择芯片;output属性框里的Output file里选择Library(如果新建的工程是DLib的话,这里默认已经是了);Library Configuration属性框里的Library选项选择None; (这里注意哦)C/C++ compile:optimizations里可以选择优化等级Preprocessor里,additional include directories栏里添加包含文件的路径如同一般工程一样把头文件的路径添加进去OK,设置如上编译后,将会后成一个a文件以上是Debug模式下生成的库文件,Release下的设置同上两者间的不同的是Debug选项中默认输出调试信息,而Release中默认没有同时时我们可以在Release中根据需要把优化等级调高一点最后,Release模式下生成的库文件小一点和平时一样建一个工程,或者随便打开一个你自己的STM32工程然后添加库,两种方法可以添加库:1可以直接像添加源文件一样,在工程中右键-add files,然后添加a文件2右键属性,在Linker选项中的Library选项卡中的additional libraries:中添加而且可以在Debug属性中添加Debug模式产生的库,release中添加release模式生成的库需要注意的是不能只添加路径,文件名也要写上 比如:E:/IAR_LIB/Stm32/stm32_daOK,这时你就可以把像stm32f10x_gpioc这样的文件从工程中Remove了(使用库)和(不使用库手动添加stm32f10x_gpioc)之间,在实际工程中,最终生成的可执行文件的大小是一样的最后,在实际工程中:只需将stm32f10x_confh, stm32f10x_ith, stm32f10x_itc复制到工程文件夹,然后把stm32f10x_itc添加进工程就行了(当然,前面已经说过,无论是在ARM工程,还是库工程中,IAR都不需要添加头文件,添加了反而会编译出错,只需要源文件中#include)另外上述三文件最好不要创建成库,因为它们在不同的工程下都是不一样的,这个就不用我说了吧:)
是这样的,那个GO TO Def
是查找一个变量,或者一个函数,或者一个宏定义,或者一个数据类型的最原始定义的地址,除了这四个之外,其他的无效。
你想打开Stm32F10Xh,用这个方法是不行的。
你要想打开这个头文件,可以用菜单里的 file--->open打开
以上就是关于基于keil MDK给stm32编程的问题。。。嵌入式系统开发环境的搭建全部的内容,包括:基于keil MDK给stm32编程的问题。。。嵌入式系统开发环境的搭建、使用IAR创建库以及如何使用库、在Keil uVision4中无法 go to stm32f10x.h这个件,如图:有哪位大哥知道的吗那些查找路径我已经设好了等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)