在MDK上建立STM32固件库工程

来源:互联网 发布:php 数组 编辑:程序博客网 时间:2024/06/03 15:38

1、将下载好的 stm32f10x_stdperiph_libV3.1.2 固件库解压到桌面。

         http://pan.baidu.com/s/1sj8W6st

 

2、以项目名称新建一个文件夹,我这里为Project

 

3、在Project文件夹里面新建SRCINCDEVFWlibMDK分别用于存放源程序、头文件、驱动、固件库和工作文件。在MDK文件里新建ObjList分别用于存放KEIL编译出来的中间文件。

 

4、把第一步解压出来的STM32F10x_StdPeriph_Lib_V3.1.2\Libraries下的CMSISSTM32F10x_StdPeriph_Driver复制到FWlib下。把STM32F10x_StdPeriph_Lib_V3.1.2\Project\Template下的main.cstm32f10x_it.c复制到Project\SRC。把STM32F10x_StdPeriph_Lib_V3.1.2\Project\Template下的stm32f10x_conf.hstm32f10x_it.h复制到Project\INC下。

 

5、启动MDK,新建工程,工作名字为Project,存放路径选择Project\MDK。点NEXT,选择处理器型号为STM32F103ZE后点OK。弹出以下对话框,询问是否加入KEIL自带的STM32启动文件,点击否

 

 

6、在Project窗口中,用鼠标右键点击Target 1,选择第一项,弹出如下对话框。

 

 

7在Output页面点击Select Folder for Objects...,在弹出的对话框中进入MDK\Obj,点击OK

勾选,Create HEX File

 

8、在Listing页面点击Select Folder for Listings...,在弹出的对话框中进入MDK\List,点击OK

 

9、在C/C++页面下的Define定义三个全局宏USE_STDPERIPH_DRIVER, USE_FULL_ASSERT, STM32F10X_HD。其中USE_STDPERIPH_DRIVER说明该工程中使用固件库, USE_FULL_ASSERT表示在调用固件库的时函数的时候,在函数前面,会调用void assert_failed(uint8_t* file, uint32_t line)检查输入的参数,assert_failed由用户自己编写,可以参考固件库中的例程下的MAIN.C文件。STM32F10X_HD表示使用的是大容量STM32

 

10、点击C/C++页面下的Include Paths后面的...按钮。分别添加Project目录下的DEVINCFWlib\CMSIS\Core\CM3FWlib\STM32F10x_StdPeriph_Driver\inc作为头文件路径。

 

11、在Project窗口中,用鼠标右键点击Target 1,选择Manage Componets,弹出如下对话框。删掉Source Group 1,然后在Groups下新建SRCINCDEVFWlib\SRCFWlib\CMSIS

 

 

12、在Files下为第11步所建的文件夹添加相应的文件。其中CMSIS中加入FWlib\CMSIS\Core\CM3core_cm3.csystem_stm32f10x.c,和FWlib\CMSIS\Core\CM3\startup\arm下的startup_stm32f10x_hd.s。添加后的内容如下图。

 

 

13、双击MAIN.C,去掉与stm32_eval开发板相关的代码。最后MAIN.C的内容如下,一个MDK下的STM32固件库工程就这样建立好了。

/* Includes ------------------------------------------------------------------*/#include "stm32f10x.h"/** @addtogroup Template_Project  * @{  *//* Private typedef -----------------------------------------------------------*//* Private define ------------------------------------------------------------*//* Private macro -------------------------------------------------------------*//* Private variables ---------------------------------------------------------*/ USART_InitTypeDef USART_InitStructure;/* Private function prototypes -----------------------------------------------*//* Private functions ---------------------------------------------------------*//**  * @brief  Main program.  * @param  None  * @retval None  */int main(void){  /* Setup STM32 system (clock, PLL and Flash configuration) */  SystemInit();  /* Add your application code here     */  /* Infinite loop */  while (1)  {  }}#ifdef  USE_FULL_ASSERT/**  * @brief  Reports the name of the source file and the source line number  *   where the assert_param error has occurred.  * @param  file: pointer to the source file name  * @param  line: assert_param error line source number  * @retval None  */void assert_failed(uint8_t* file, uint32_t line){   /* User can add his own implementation to report the file name and line number,     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  /* Infinite loop */  while (1)  {  }}#endif


将最终移植好的代码打包,放到网盘上存储(Project_LIB.rarProject_ucos.rar)

http://pan.baidu.com/s/1hqpCeu4  http://pan.baidu.com/s/1dDtgaIl 



0 0
原创粉丝点击