如何创建RL_M3工程模板_RTX移植到STM32F103

下面以Xplain STM32(使用STM32F103ZET6 CPU)开发板为例,将RTX移植到该板上运行.为了能让刚接触这个系统的人了解整个移植过程,会重新建立一个工程,将所有的源码(包括RTX内核)添加到工程中,而不使用RTX库的形式.

1. 新建一文件夹(rtx-stm32),内容如下:

-- keil包含keil的工程文件

-- misc包含连接脚本文件

-- si是source insight工程文件

--src包含源代码:

--- cm3 CPU相关文件

--- stm32 针对stm32 CPU的文件

--- rtx 操作系统内核

--- user 应用程序

新建一个工程,将工程文件保存到keil文件夹下.

2. 给工程添加源代码

将cmsis的两个文件core_cm3.c, core_cm3.h copy到cm3下(可在其他工程找).

把STM32的启动代码,库源码copy到stm32文件夹下.

将RTX源码Keil\ARM\RL\RTX\SRC\CM copy到rtx文件夹下,可以新建个cm文件夹,表明内核源码是针对cm3的.

从Keil\ARM\RV31\INC, Keil\ARM\RL\RTX\Config下分别copy RTL.h,RTX_lib.c和RTX_Conf_CM.c文件到rtx文件夹下.RTL_lib.c是一操作系统底层相关文件,RTX_Conf_CM.c是操作系统配置文件.

user下新建一个main.c文件,包含应用程序.具体内容可参考\Keil\ARM\RL\RTX\Examples文件夹下的例子.

工程中文件夹结构和添加的文件如下:

如何创建RL_M3工程模板_RTX移植到STM32F103_第1张图片

如何创建RL_M3工程模板_RTX移植到STM32F103_第2张图片

如何创建RL_M3工程模板_RTX移植到STM32F103_第3张图片

注意不要将RTX_lib.c添加到工程中,否则编译有错,该文件被包含在其他文件中.

3. 工程属性设置

Targe页面如下: operating system要先为None, 勾选Use MicroLib选项

如何创建RL_M3工程模板_RTX移植到STM32F103_第4张图片

C/C++页面如下:

如何创建RL_M3工程模板_RTX移植到STM32F103_第5张图片

定义宏USE_STDPERIPH_DRIVER=1, STM32F10X_HD=1, 这两个宏是与STM32源码相关的,表示 1. 要使用STM32提供的外设驱动, 2. CPU类型.

要勾选上No Auto Includes, 如果不勾的话,自动将:

Keil\ARM\RV31\INC
Keil\ARM\CMSIS\Include
Keil\ARM\Inc\ST\STM32F10x

添加到头文件的搜索路径中,这几个路径下包含的头文件与我们工程中的有些头文件一样,有些混乱,所以不要自动添加头文件的搜索路径,需要的时候自己添加.

Includes Paths中包含的路径有:

D:\Keil\ARM\ARMCC\include;..\src\rtx;..\src\cm3;..\src\user;..\src\cm3\stm32\Libraries\Inc;..\src\cm3\stm32\Starup

Asm页面如下:

如何创建RL_M3工程模板_RTX移植到STM32F103_第6张图片

将No Auto Includes选项勾上就行了

4. 将stm32f10x_it.c文件中的SVC_Handler, SysTick_Handler函数屏蔽,这两个函数在HAL_CM3.c中已定义好.

经过这4步,rtx可以在Xplain STM32板上跑起来了.

你可能感兴趣的:(KEIL,MDK,RL,OS,stm32)