码迷,mamicode.com
首页 > 其他好文 > 详细

RT-thread-2.0.1移植(基于STM32F4xx)

时间:2015-06-09 23:13:57      阅读:869      评论:0      收藏:0      [点我收藏+]

标签:

1、将下载的rt-thread-2.0.1解压后,得到如下图所示的文件列表。

技术分享

在bsp目录下可以找到stm32f40x文件夹,这文件夹里面包括了库函数,其他芯片平台的文件夹统统删掉。在libcpu下,只需要将arm文件夹里面的common和cortex-m4留下来,其他的也都统统删掉。还有其他一些辅助性的文件,如:documentation、examples、tools什么的我们也统统删掉,处理完这些后,一个干净的RTT就准备好了。

2、虽然RT-thread将文件分类的很好,但最好还是根据自己的项目习惯将整个项目整理一下。将整个软件项目分成四个部分:app,bsp,mdk,rt-thread-2.0.1。如下图所示。

技术分享

                app:应用层,存放项目开发时自己编写的应用文件

                bsp:驱动层,里面主要包括了RT-thread在stm32f40x平台中的底层驱动(applications,drivers,libraries_1.5.0),以及项目所使用的外部设备驱动(peripheral)

               mdk:存放keil mdk5.15的工程文件

rt-thread-2.0.1:系统层,存放rt-thread-2.0.1中的components(系统组件),include(系统头文件),libcpu(芯片移植)和src(系统内核)

3、安装好keil mdk5.15后,新建项目工程文件并保存在mdk文件夹中。根据项目文件分类添加源文件,如下图所示。

技术分享

然后向工程添加头文件目录,如下图所示。

技术分享

4、配置stm32f407系统时钟

(1)在stm32f4xx.h文件中选择#define STM32F40_41xxx以及#define USE_STDPERIPH_DRIVER;

(2)修改stm32f4xx.h文件中默认的系统外部晶振时钟#define HSE_VALUE    ((uint32_t)8000000)

(3)修改system_stm32f4xx.c文件中所选器件有关系统时钟的PLL_M,PLL_N的值(PLL_P=2)。对于stm32f407xx,系统时钟为168MHZ,一般只需修改PLL_M,PLL_N。

       #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F401xx)
       /* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
      #define PLL_M 8

      #if defined(STM32F40_41xxx) || defined(STM32F427_437xx) || defined(STM32F429_439xx) || defined(STM32F446xx)
      #define PLL_N 336
      /* SYSCLK = PLL_VCO / PLL_P */

(4)使用stm32f40_41xxx的FPU,需要在SystemInit函数开头添加相关语句,同时在keil工程配置中选择使用FPU(在stm32f4xx.h中有#define __FPU_PRESENT 1)。

      /* FPU settings ------------------------------------------------------------
      * If no this settings,it maybe enter HardFault_Handler() interrupt when mdk complier chose "Use FPU" to use FPU instruction. */
     #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
     SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
     #endif

(5)在stm32f4xx_it.h和stm32f4xx_it.c中将HardFault_Handler,PendSV_Handler以及SysTick_Handler三个中断入口函数注释掉。HardFault_Handler,PendSV_Handler在context_rvds.S文件中分别实现RT-thread系统异常处理和线程切换,而SysTick_Handler在board.c中实现RT-thread系统时钟节拍计数。

 

RT-thread-2.0.1移植(基于STM32F4xx)

标签:

原文地址:http://www.cnblogs.com/King-Gentleman/p/4557557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!