打印
[应用相关]

(转)在MDK上建立STM32固件库工程

[复制链接]
731|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wowu|  楼主 | 2018-9-5 12:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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)。


沙发
xiaoqizi| | 2018-9-5 12:12 | 只看该作者
这个 用的是keil吧

使用特权

评论回复
板凳
wowu|  楼主 | 2018-9-7 11:02 | 只看该作者
是的 是用的keil

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

80

主题

3892

帖子

1

粉丝