本帖最后由 zhangbin_abc 于 2015-12-20 22:35 编辑
写在前面的话 每天早上六点钟起床,下午下班回到住的地方已经是夜晚八点,工作累不累,这个问题就不再回答了,好不容易等到双休日,终于可以喘口气了,可就是这么宝贵的两天,我还是在写分享帖,为了什么?因为心中还有对嵌入式技术的爱好和追求吧,还有想与大家分享心得的愿望,还有么?………..额~~ 还有,就是没有女朋友,没有约会…….啊,多么痛的领悟!
哈哈,不瞎扯了,进入正题。我今年基本都是在用交叉编译工具链和Makefile编译程序,有段时间没用IDE了,前面在用的时候还是keilMDK4,现在都到5了,时代变化太快了。以前用的是cortex-m3的内核,3.5版本的标准库。现在要重头来新的了。所以在这一篇跟大家分享一下IDE的安装和工程模板的建立。
一、Keil MDK 的安装 安装所需的软件列表: 1、MDK516a.exe keil MDK软件,我所用的版本号为5.16a,可以自行选择 2、KEIL_Lic.exe keil MDK的注册机,注册方法可以在网上查询 3、Keil.STM32F4xx_DFP.2.7.0.pack STM32F4系列芯片的器件库 4、ARM.CMSIS.4.5.0.pack CMSIS架构相关软件包 5、Keil.MDK-Middleware.7.0.0.pack 中间件的软件包 我们在安装pack时可以先到keil的官网上将相关的pack下载下来,然后在pack installer界面中点击File——>Import,通过导入的方式安装,要比在线安装速度快。pack官网下载地址:http://www.keil.com/dd2/pack/#/eula-container 这里因为是针对STM32F469控制器,所以我只下载了F4系列的DFP,并且这个pack是一定要安装的,否则在建立工程时,没有具体的芯片型号可供选择,导致无法创建。
二、工程模板的建立 准备软件:STM32F4xx_DSP_StdPeriph_Lib_V1.6.1标准库,由于比较大,这里不能上传,可以自行从网上下载。 首先说明本工程模板是根据自己的习惯来建立的,可能每个人的文件组织习惯不同,这里只作参考。
1、新建一个工程文件夹STM32F469,在该文件夹中新建CMSIS、FWLIB、PROJECT、USER四个子文件夹。
2、在CMSIS文件中新建inc和src两个文件夹: 将STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates中的system_stm32f4xx.c 和 STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm中的startup_stm32f469_479xx.s复制到src文件夹中。 将STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Device\ST\STM32F4xx\Include中的stm32f4xx.h、system_stm32f4xx.h 和 STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\CMSIS\Include中的core_cm4.h、core_cmFunc.h、core_cmInstr.h、core_cmSimd.h复制到inc文件夹。
3、将STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Libraries\STM32F4xx_StdPeriph_Driver中的src和inc两个文件夹复制到FWLIB文件夹中。
4、我们稍后创建的工程保存在PROJECT文件夹中,这里不需要额外建立OBJ和LIST两个文件夹,因为当保存工程的文件夹指定后,Keil MDK会自动在该文件夹中创建Objects和Listings两个文件夹。
5、在USER文件夹中新建src和inc两个文件夹: 将STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Project\STM32F4xx_StdPeriph_Templates中的main.c、stm32f4xx_it.c复制到src文件夹中; 将STM32F4xx_DSP_StdPeriph_Lib_V1.6.1\Project\STM32F4xx_StdPeriph_Templates中的stm32f4xx_conf.h、stm32f4xx_it.h复制到inc文件夹中。 以后我们新创建的源文件及其相应的头文件就可以分别放到USER文件夹下的src和inc文件夹中了。这里我新建了BSP.c和BSP.h文件。
6、打开Keil MDK软件,新建工程MyProject,创建工程的目录结构,并向相应的目录中添加C文件,这里就不一步一步说明了,如下图所示:
7、工程配置 1)由于STM32F469开发板外部主晶振是8MHz,所以将Target选项中的Xtal改为8MHz。
2)打开Output选项卡,勾选Creat Hex File,同时点击Select Folder for Objects,会发现在PROJECT文件夹中Objects文件夹已经建立。Listing选项卡中也建立了Listings文件夹,这里不再展示。 3)打开C/C++选项卡,按下图进行配置,添加宏定义和头文件路径,然后保存退出。
8、重要文件的修改 1)stm32f4xx.h文件 由于我们所使用的开发板外部晶振为8MHz,而库文件中默认设置的为25MHz,所以需要修改相关宏定义。 #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || \
defined(STM32F410xx) || defined(STM32F411xE) || defined(STM32F469_479xx)
#if !defined (HSE_VALUE)
// #define HSE_VALUE ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
#define HSE_VALUE ((uint32_t)8000000)
#endif /* HSE_VALUE */
2)system_stm32f4xx.c 文件 STM32F469的内部运行频率最高可达180MHz,外部8MHz要经过一系列的分频和倍频,最终供给主时钟,在该文件中有几个重要的宏:PLL_M、PLL_N、PLL_P。我们根据STM32F469的参考手测可以得到:SYSCLK = 8MHz*PLL_N/(PLL_M*PLL_P) 这里要在system_stm32f4xx.c 中修改PLL_M=8 PLL_N=360 PLL_P=2。 #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx) || defined(STM32F469_479xx)
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
//#define PLL_M 25
#define PLL_M 8
#if defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx) || defined(STM32F469_479xx)
#define PLL_N 360
/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P 2
#endif /* STM32F427_437x || STM32F429_439xx || STM32F446xx || STM32F469_479xx */
三、工程模板测试 编写一个简单的流水灯程序进行测试即可,比较简单,这里不再赘述。
|