rtthread 学习记录以及一些简单问题总结

6 篇文章 0 订阅
1 篇文章 0 订阅

1、目录结构

    在rtthread工程中一般有Drivers、DeviceDrive、Application、stm32_hal、kernel、finsh、libc、cortex-M3这八个目录,其中stm32_hal是官方驱动。kernel是rtt内核,finsh是rtt自带的控制台组件,可以进行简单的交互,有点类似低配版linux的命令行。libc是如果用到一些类似于time函数的库文件。cortex-m3就是ARM的M3内核相关东西了。这几个一般是不需要修改,libc根据需要自行增删。

2、Drivers目录

    Drivers指的是底层驱动,比如一个串口设备,所用的时钟、引脚、波特率、数据位等都是在这里进行配置并将一个串口以类似于“uart1”的设备ID注册到系统中,然后抽象层才可以直接使用名字为“uart1”的设备。同样spi和其他外设也是一样的。

3、DeviceDriver目录

    DeviceDriver属于应用层设备驱动了,里面完善了一个设备的操作过程。以串口为例,里面是串口设备的打开、关闭、控制等函数。这些函数都会在初始化时和抽象设备rt_device绑定,当调用rt_device_write()的时候会调用串口的write函数,其他设备类似。

使用外设时候需要在rtconfig中打开宏定义使用外设以及使用的外设名(比如RT_USING_UART和RT_USING_UART1),添加相关Drivers、DeviceDrivers、hal标准库驱动文件。msp在最新版的rtt402中msp级别驱动文件“Drivers/stm32f1xx_hal_msp.c”中很多外设没有打开,需要手动编写驱动程序,串口只写了一部分,没有全写,可以自己根据已有的去写。并且外部晶振的频率也不对,需要将board.c中的SystemClock_Config()函数中的RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;改为RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9;他默认的是12M外部晶振,12*6=72M了,这里改为9是因为我用的8M晶振,改了这个还要改一下晶振频率,将stm32_HAL/system_stm32f1xx.c中的

#define HSE_VALUE               12000000U

改为#define HSE_VALUE               8000000U匹配自己用的板子外部晶振。

使用rtt出现问题是需要检查以上几个地方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值