1、将下载好的 stm32f10x_stdperiph_libV3.1.2 固件库解压到桌面。 http://pan.baidu.com/s/1sj8W6st
2、以项目名称新建一个文件夹,我这里为Project。 3、在Project文件夹里面新建SRC、INC、DEV、FWlib、MDK分别用于存放源程序、头文件、驱动、固件库和工作文件。在MDK文件里新建Obj、List分别用于存放KEIL编译出来的中间文件。 4、把第一步解压出来的STM32F10x_StdPeriph_Lib_V3.1.2\Libraries下的CMSIS和STM32F10x_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.h和stm32f10x_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目录下的DEV、INC、FWlib\CMSIS\Core\CM3、FWlib\STM32F10x_StdPeriph_Driver\inc作为头文件路径。 11、在Project窗口中,用鼠标右键点击Target 1,选择Manage Componets,弹出如下对话框。删掉Source Group 1,然后在Groups下新建SRC、INC、DEV、FWlib\SRC、FWlib\CMSIS。 12、在Files下为第11步所建的文件夹添加相应的文件。其中CMSIS中加入FWlib\CMSIS\Core\CM3的core_cm3.c和system_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.rar和Project_ucos.rar)。
|