rt_thread移植到stm32f303ze

之前有项目要用stm32f303ze,这个是F3系列rtt的bsp开发包里面是没有的,网上也很少有资料,也未看到有人移植出来,这个片子估计用的比较少,所以只能自己动手移植,下面写下移植的注意点,给其他人做个参考:

 mcu: stm32f303ze      contex-m4内核,ram/512kb,rom/80kb,   144pin

 rt_thread:  3.1.0

因为没有f3系列的bsp包,我也不可能‘无中生有’,不过我们可以借鉴其他bsp包,那么参考哪一个呢? F3是contex-m4内核,那么我们肯定是参考f4系列了,我选的是f40x bsp包,拷贝一份完整的f40xbsp包就可以正式开始移植了;

1.  第一步直接打开ENV工具,输入命令menuconfig 

rt_thread移植到stm32f303ze_第1张图片

2.  进入界面后,把串口全部关闭

rt_thread移植到stm32f303ze_第2张图片

其实不关闭也可以,我开始移植的时候,是直接想上裸系统,点个灯看下,主要是看软件是否跑起来;

3. 进去面配置组件,把网络功能,fish,filesystem 可以都关闭,配置好后,然后退出系统,输入命令

   scons --target==mdk5

4. 构建成功后,用keil5打开后,编译一下,就会出现一大堆的错误 ,那当然有错误了,因为我们现在是f40x上改的,首要的任务就是把项目目录下面的Libraries文件全部替换掉,f3是带dsp和浮点运算功能的,有一些lib文件,你可以选择不加载,只加载标准库即可;

rt_thread移植到stm32f303ze_第3张图片rt_thread移植到stm32f303ze_第4张图片rt_thread移植到stm32f303ze_第5张图片

博主为了偷懒,把库里面的文件放一起了,包括头文件时,不用到处去include,有洁癖的可以按规矩来;

换了文件后,别忘记用keil加载下文件,然后再包含下头文件,这个比较简单,就不截图了;

4. 继续编译,依然发现有N多错误,那是显然滴,f4和f3区别还是很大的,最重要的2个错误,如下:

   第一个是 Drivers下面的驱动 usart.c文件,里面报错; 

   这些个是usart里面的驱动错误,DMA_Stream_TypeDef 在f3里面不叫这个,需要自己手动去改下,为了移植成功,我只能全部屏蔽了,后续再改;

   第二个是头文件包括报错;   改为#include "stm32f30x.h"即可

其他的一些错误,包括f3库文件,有些用不到,可以直接屏蔽或者选择不加载即可

5. 到这一步,编译基本上没什么错误了,下一步就系统进行配置

   A   首先是时钟,默认是8m的外接HSE晶振,我的片子是24M,有几个参数要改下:

         stm32f30x.h   头文件中,#define HSE_VALUE            ((uint32_t)24000000)   必须改,不然串口都会出问题,我之前的博           客也写了,这个大家一定要注意了;

         SetSysClock(),这个函数主要是对时钟进行配置的,大多数不需要修改,你只要用stm32CubeMX的时钟树,自己配置下,然后比对下参数即可,  如下:

   B.  RAM需要配置下

         board.h  头文件中,  #define STM32_SRAM_SIZE         80       rom/80kb

 C.   如果使能了RT_USING_PIN 功能,还需要对gpio配置下,但是很遗憾,f4系列的pin脚和f303对不上,所以只能不加载了;

 D.   在stm32f30x_it.c中屏蔽几个中断函数,SysTick_Handler    PPP_IRQHandler   PendSV_Handler  不然编译无法过

6. 最后一步在keil里面再配置下,首先在device选项中,选在stm32f303zetx,debug中选择下下载器,其他的都是常规配置,没有什么特殊之处;随便点个灯看下,系统是否跑起来,博主选的H2这个管脚;

rt_thread移植到stm32f303ze_第6张图片rt_thread移植到stm32f303ze_第7张图片

开了个测试线程,很遗憾,灯并未跑起来,这个其实是很可怕的,编译没问题,该改的都改了,那为什么不亮呢?

这个时候就考验你对rt-thread移植的功底以及对芯片手册的理解了,按照上面的步骤,我仔细的看一遍,确定没有问题,那么问题只能出在配置上,查看数据手册,果不其然;rt_thread移植到stm32f303ze_第8张图片

改为64后,妥妥的跑起来了!

移植技巧:

 对于新的片子,无论是有bsp包或者自己搭建的,可以先在裸机下面写个简单的代码验证下,一是试验板子好坏,二是验证库文件,都没有问题后,再替换到bsp包里面,一举二得,如果上来就移植bsp,有可能会出现未知错误!

下一步,把其他外设添加进去,串口,spi,i2c,文件系统等等!

 

你可能感兴趣的:(rt-thread,stm32)