stm32f429 移植RT_Thread

发布者:RainbowMelody最新更新时间:2018-12-20 来源: eefocus关键字:stm32f429  移植RT_Thread 手机看文章 扫描二维码
随时随地手机看文章

RTT作为一个中国的开源实时操作系统,经过国内一些专业人士的充实,现在其已经支持大部分MCU以及X86当然现在用的很火的STM32也不例外;RTT最大的特点就是线程数不限,支持以线程为基本调度单位的多任务系统。调度算法是基于优先级的全抢占式线程调度,支持256个线程优先级(亦可配置成32个线程优先级),0优先级代表 最高优先级,255优先级留给空闲线程使用;相同优先级上支持多个线程,这些相同优先级的线程采用可设置时间片长度的时间片轮转调度;调度器寻找下一个最 高优先级就绪线程的时间是恒定的(O(1))。系统不限制线程数量的多少,只与物理平台的具体内存相关。

现在2014.2月,RTT已经更新到1.2.0版本,当然现在STM32也出了最新的429/439,但是RTT里只支持了40X;但是40X与429/439在硬件上区别不是很大这样我们就可以用40X作为模板进行移植了。

在移植之前大家要知道,RTT是靠scons来编译和生成keil或者IAR的工程文件的,所以用scons这个工具在移植时比较方便,不必自己去找那些文件。

在此之前确保自己电脑上已经安装了Python和scons:下载的地址 Python:http://www.python.org/download/ (在此我用的是Python2.7)

scons: http://www.scons.org/download.php  选择适合自己系统版本

先安装Python;再把Python的安装路径添加到系统的PATH中;再安装scons一路next;会自动安装到:XXX\Python27\Scripts目录下,再把这路径添加到系统PATH中;弄好了后分别在cmd下运行一下Python -v,scons -v看安装是否成功。

接下来去RTT官网下载源码,一般首页的右上角就会有下载链接:下载下来后解压到一个盘的根目录:改名为RT_Thread,比如D:\RT_Thread;在系统的系统变量中添加一个RTT_ROOT 变量,把自己刚刚那个路径填进去,运行一下set RTT_ROOT,看是否成功。

再把stm32f429的库函数下载下来。

现在回到刚刚放RT_thread文件的中去:

stm32f429 移植RT_Thread - stubbron - ChinaHEAVEN

bsp里就是可以支持芯片的工程模板;里面有一个 stm32f40x目录,把它拷贝出来,为了不破坏原来的文件;之前说了RT_Thread是靠scons来编译或者建立keil工程的,和linux的Makefile有些相似之处,在这个目录下有几个比较重要的文件:

stm32f429 移植RT_Thread - stubbron - ChinaHEAVEN

 一个是rtconfig.h,就是通过这个文件添加和删减系统组件的;还有一个是template.uvproj这是生成的keil工程的模板,可不要删了。接下来用写字板打开 rtconfig.py 文件,他就是定义编译器这些的巨像Makefile,我们用的是keil,修改一下 keil 的安装路径,看看自己keil装到哪了,如果一致就不用改了。实打开每个文件夹下面都一个SConscript文件,这个就是让文件关联起来的文件,大家仔细看看就知道它是如何工作的了;

大家可以看看rtconfig.h文件,看了就知道是怎么注册一个组件,删减一个组件;默认就开了一个finsh,我们就先移植这个简单的。

打开命令行cmd ,切换到stm32f40x目录下,执行 scons --target=mdk4 –s ,这下就把keil工程建建好了,keil打开工程;大家会发现keil的设置有些问题,我们手动改一下,就是芯片选型,还有就是外部晶振。这两个改好后;我们看看工程文件:

stm32f429 移植RT_Thread - stubbron - ChinaHEAVEN比较整洁吧,比自己手动移植干净的多,打开Drivers里面的board.c/ board.h就是初始化板子,看看board.h中会发现板子用的是USART2,而且内存也不对,下边红的就要改的(如果你用的是usart就不用改),如果用的不是默认引脚,那再打开usart.c把引脚一改。

// Internal SRAM memory size[Kbytes] <8-64>

// Default: 64

#define STM32_SRAM_SIZE         192    //stm32f429 是 256K 在0x20000000后有192K 在0x10000000还有64k

#define STM32_SRAM_END          (0x20000000 + STM32_SRAM_SIZE * 1024)

#define RT_USING_UART1

//#define RT_USING_UART2

//#define RT_USING_UART3

// Console on USART: <0=> no console <1=>USART 1 <2=>USART 2 <3=> USART 3

//  Default: 1

#define STM32_CONSOLE_USART 1

下一个文件夹STM32_Stperiph:这个文件改的多一点,因为和STM32F429的库文件有些不合,先把这个目录下的文件都移除;看看最后的那个startup汇编文件也不对,之前不是下载了stm32f429的库文件嘛,把429要的库文件替换STM32_Stperiph下的文件,把里面的startup_stm32f429_439xx.s替换原来的startup_stm32f4xx.s,分别在在刚刚拷贝出来的文件里stm32f40x\Libraries\STM32F4xx_StdPeriph_Driver\inc src和

stm32f40x\Libraries\CMSIS\ST\STM32F4xx\Source\Templates\arm目录下。再把这文件的文件添加到STM32_Stperiph下。

那么我们先编译一下,会发现有错误,为什么呢?因为我们忘了还有一个文件忘改了,那就是stm32f4xx_conf.h;它在stm32f4xx\drivers目录下,把新下的库文件里面的stm32f4xx_conf.h拷贝过来。

在编译一次,应该就可以通过了,下载下去就可以看见串口打印出信息了。

再次要确定自己的晶振是不是25MHz,如果是8MHz就必须在stm32f4xx_conf.h中加上:(这是在readme.txt有说)

#if defined  (HSE_VALUE)

/* Redefine the HSE value; it's equal to 8 MHz on the STM32F4-DISCOVERY Kit */

 #undef HSE_VALUE

 #define HSE_VALUE    ((uint32_t)8000000)

#endif /* HSE_VALUE */


关键字:stm32f429  移植RT_Thread 引用地址:stm32f429 移植RT_Thread

上一篇:RT-Thread在STM32F103C8T6上面的使用——使用msh
下一篇:stm32在中断函数里执行初始化函数

推荐阅读最新更新时间:2024-03-16 16:20

梳理STM32F429之通信传输部分---NO.2 硬件IIC
一、STM32 的 I2C 特性及架构: 只要遵守协议,就是标准的通讯,不管如何实现它,不管是 ST 生产的控制器还是 ATMEL 生产的存储器, 都能按通讯标准交互。 由于直接控制 GPIO 引脚电平产生通讯时序时,需要由 CPU 控制每个时刻的引脚状态,所以称之为“软件模拟协议”方式。 相对地,还有“硬件协议”方式, STM32 的 I2C 片上外设专门负责实现 I2C 通讯协议,只要配置好该外设,它就会自动根据协议要求产生通讯信号,收发数据并缓存起来, CPU只要检测该外设的状态和访问数据寄存器,就能完成数据收发。这种由硬件外设处理 I2C协议的方式减轻了 CPU 的工作,且使软件设计更加简单。 1、STM32
[单片机]
梳理<font color='red'>STM32F429</font>之通信传输部分---NO.2 硬件IIC
第48章 STM32F429的内部Flash和SPI Flash都使用MDK下载
48.1 初学者重要提示 SPI Flash的相关知识点可以看第31章和32章。 操作本章配套例子前务必先将SPI Flash的下载算法放到MDK安装目录。 本章节配套例子实现了将12点阵,16点阵,24点阵和32点阵中文全字库下载到外置SPI Flash。 注意不可以STM32F4的内部Flash和外部SPI Flash同时下载,依次下载即可,详情看此本章48.5和48.6小节即可。 48.2 内部Flash和SPI Flash都使用MDK下载的优势 通过这种方式,可以方便的更新SPI Flash中的数据,特别是全字库,图库,主题等资源文件的下载。 48.3 下载算法存放位置 编译例子:V6-025_SPI Flas
[单片机]
第48章 <font color='red'>STM32F429</font>的内部Flash和SPI Flash都使用MDK下载
STM32F429(HAL库)_USART串口发送&接收(使用STM32CubeMX)
一、HAL库相关函数 1、串口发送/接收函数 HAL_UART_Transmit();串口轮询模式发送,使用超时管理机制 HAL_UART_Receive();串口轮询模式接收,使用超时管理机制 HAL_UART_Transmit_IT();串口中断模式发送 HAL_UART_Receive_IT();串口中断模式接收 HAL_UART_Transmit_DMA();串口DMA模式发送 HAL_UART_Transmit_DMA();串口DMA模式接收 2、串口中断函数 HA
[单片机]
<font color='red'>STM32F429</font>(HAL库)_USART串口发送&接收(使用STM32CubeMX)
STM32F429中LTDC的DMA2D加速
液晶屏的时序问题? 每个液晶屏的时序都不一样,但总体上是类似的。如下图: VDEN: 数据使能信号。HSYNC: 每一行扫描的起始点, 在扫描过程中, 不会管上一行扫描有没有结束, 当出现这一个信号,即开始新一行的扫描.VSYNC: 每一场扫描的起始点, 这与HSYNC相似的.BACK PROCH: 因为有不同tft屏和不同扫描硬件, 并且HSYNC和VSYNC对于时序的约束力有限, 所以会加入一些容错的时间, 因此行扫描和场扫描都会有BACK PROCH: 和FRONT PROCH: , 并且会在HSYNC,VSYNC出现之后, 和正常分辨率扫描之后都将容错时序, 也就是在正常扫描的前后都加入容错时间, BACK
[单片机]
stm32f429 移植RT_Thread
RTT作为一个中国的开源实时操作系统,经过国内一些专业人士的充实,现在其已经支持大部分MCU以及X86当然现在用的很火的STM32也不例外;RTT最大的特点就是线程数不限,支持以线程为基本调度单位的多任务系统。调度算法是基于优先级的全抢占式线程调度,支持256个线程优先级(亦可配置成32个线程优先级),0优先级代表 最高优先级,255优先级留给空闲线程使用;相同优先级上支持多个线程,这些相同优先级的线程采用可设置时间片长度的时间片轮转调度;调度器寻找下一个最 高优先级就绪线程的时间是恒定的(O(1))。系统不限制线程数量的多少,只与物理平台的具体内存相关。 现在2014.2月,RTT已经更新到1.2.0版本,当然现在STM32也出
[单片机]
<font color='red'>stm32f429</font> <font color='red'>移植</font><font color='red'>RT_Thread</font>
STM32F429--位带操作
一、位带操作的原理 51单片机可以直接对某一位IO进行读写操作,而STM32则通过位带操作来控制一个单独的IO口。 概念 位带区:支持位带操作的地址区。 位带别名区:对别名地址的访问最终作用到位带区的访问上。位带别名区对位带区的访问有个地址映射过程。 目的 对位带区的比特位进行独立的读写操作,即单独操作一个位 ,它是通过对位带别名区的操作来实现。 具体过程: 对位带别名区进行读写访问,位带别名区通过地址映射关系映射到相应的位带区,对位带区进行原始比特的读写操作。 地址映射 对位带别名区进行读且操作 ---------------------- 对位带区进行读且操作(目的) 下面是位带操作的一些说明
[单片机]
STM32F429--位带操作
STM32F429之UART使用
#if 1 /// 重定向c库函数printf到USART1 int fputc(int ch, FILE *f) { /* 发送一个字节数据到USART1 */ USART_SendData(USART1, (uint8_t) ch); /* 等待发送完毿*/ while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); return (ch); } /// 重定向c库函数scanf到USART1 int fgetc(FILE *f) { /* 等待串口1输入数据 */ while (
[单片机]
<font color='red'>STM32F429</font>之UART使用
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved