Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
DIY综合交流区
ufun+RTT项目完结篇
发布于 2019-08-25 15:46:53 浏览:2331
订阅该版
* 本帖最后由 KelvinHe 于 2019-8-25 15:46 编辑 * **1. 练习创建与使用线程**本篇是ufun与rt-thread系列的完结篇,介绍如何使用ufun硬件平台与rt-thread操作系统设计自己的嵌入式软硬件系统。由于项目中要使用rt-thread实时操作系统,那么一个重要的操作就是学习使用该系统的多线程。 **1) 创建3个任务:**l 绿灯任务,闪烁周期:2s;l 红灯任务,闪烁周期:1s;l 蓝灯任务,闪烁周期:0.5s; 先看下硬件原理图: **2) RGB模块测试:** 可以先使用这段代码测试一下RGB LED模块是否正常,结果表明硬件没问题。然后可以继续进行了。**3) demo代码简析:**这里描述了蓝灯任务,其余类似,不再详述。 代码分析如下:线程管理中有三个重要部分:a) 线程控制块,static rt_thread_t tid_blue = RT_NULL;b) 线程创建API:rt_thread_create();c) 线程入口函数:static void thread2_entry(void *parameter); **2. 硬件平台搭建**先用之前开发测试过的开发板(MCU为STM32F103C8T6)和程序对OLED显示模块和超声波模块进行测试,确保硬件是正常的。 然后搭建ufun+OLED模块+超声波测距模块,同样,需要对硬件进行测试。 然后程序可以直接移植到ufun开发板上进行测试,硬件测试通过,原型平台搭建任务完成。 **3. 在rt-thread上创建任务(线程)**1) OLED模块开发测试由于OLED模块采用IIC接口,所以此处需要使用rt-thread(某些地方简称RTT)的IIC模块。RTT采用软件模拟iic的方式。由于RTT的模块可以进行灵活裁剪,需要使用官方的menuconfig工具。使用menuconfig可以重新配置MCU的外设,一般来说,需要2个步骤:先配置需要的外设;再重新编译工程——scons --target=mdk5 –s。 之后发现这样处理存在问题,具体问题,可以看这篇帖子:[https://club.rt-thread.org/ask/question/421414.html](https://club.rt-thread.org/ask/question/421414.html)。 于是开始想其他办法,在rt-thread上能否直接使用HAL库操作OLED的呢?理论上是可行的,因为rt-thread就是在ST的HAL库基础上开发的。然后,就试着调用HAL的函数,测试结果证明了这条路是可行的。只需要:#include "stm32f1xx_hal.h",然后就可以调用HAL库的函数了。当转移到这个方案后,后面就比较容易了。 2) 超声波测距模块开发测试依然采用OLED模块的方案:rt-thread+HAL库。这里的主要原因是RTT尚不支持输入捕获功能,为了项目顺利完结,只能先使用HAL库的方式了。**4. 集成测试**1) 距离测试精度还是非常高的。2)动态测试连接充电宝后,移动测距模块即可实现动态测试。 **5. 发布与小结**1) 代码的可移植性写代码时就需要考虑可移植性,尽量不要直接操作寄存器,否则更换了硬件,就容易遗漏一些点。举例说明,190行的可读性、可移植性,就比189行要好很多。 2) Rt-thread与HAL库的结合首先,rt-thread是在ST的HAL库基础上开发的,所以,程序中也是可以直接调用HAL库的(尽管RT官方不建议这么做)。这样做有以下两点考虑:代码移植工作量更小;RT的某些功能尚未支持。缺点就是会对工程文件的结构造成混乱。 3) HAL库的中断优先级不能设置为最高,否则会对os的调度造成影响。
查看更多
5
个回答
默认排序
按发布时间排序
水清沙白
2019-08-25
这家伙很懒,什么也没写!
超声波测距,以前也玩:lol
tyustli
2019-08-25
这家伙很懒,什么也没写!
楼主可以考虑开源一下代码
KelvinHe
2019-08-31
这家伙很懒,什么也没写!
>楼主可以考虑开源一下代码 --- 好的,有空我上传发布一下:)
XQQ
2019-09-04
这家伙很懒,什么也没写!
楼主威武
XQQ
2019-09-04
这家伙很懒,什么也没写!
>好的,有空我上传发布一下 --- 楼主加一下我微信:RT-Thread2006
撰写答案
登录
注册新账号
关注者
0
被浏览
2.3k
关于作者
KelvinHe
这家伙很懒,什么也没写!
提问
6
回答
6
被采纳
0
关注TA
发私信
相关问题
1
[项目]搞个开源的硬件项目
2
硬件计划贴,及时更新,欢迎提意见
3
软件计划贴,及时更新,欢迎提意见::WMA,MOUNT,LWIP等问题急需解决.
4
MMS协议
5
定点的wma解压库-libwma
6
QQ群记录 [20090821]
7
STM32网络收音机PCB报名征集
8
第一版调试记录
9
第二版硬件讨论
10
RADIO项目相关模块规格--欢迎大家自己做板时规格与此兼容,减少重复劳动
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
RT-thred的stm32h723对应bsp包CubeMX添加其他外设报错
2
RT-Thread中的time溢出问题,时间戳溢出,解决方法
3
ART-PI使用env驱动ETH网卡,pc和板子可以ping通
4
SystemView线程名字不显示
5
只用网页也能跑RT-Smart 无门槛腾讯Cloud studio + smart-build快速构建
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
I2C_IIC
UART
ESP8266
cubemx
WIZnet_W5500
ota在线升级
PWM
BSP
flash
freemodbus
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
keil_MDK
ulog
SFUD
msh
C++_cpp
MicroPython
本月问答贡献
RTT_逍遥
9
个答案
2
次被采纳
三世执戟
8
个答案
1
次被采纳
KunYi
8
个答案
1
次被采纳
winfeng
2
个答案
1
次被采纳
YZRD
2
个答案
1
次被采纳
本月文章贡献
catcatbing
2
篇文章
5
次点赞
swet123
1
篇文章
4
次点赞
Days
1
篇文章
4
次点赞
YZRD
1
篇文章
2
次点赞
阳光的掌控者
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部