[第3期 空气质量分析仪]第二周-基于串口,学习RTT系统设备...

发表在 实战入门学习营2019-10-24 12:55 [复制链接] 0 78

本帖最后由 TBIQ_3050 于 2019-10-24 12:57 编辑
, x0 n# J  u, j. a0 y: B8 S" i2 [* k- K) X# t- i
基于串口,学习RTT系统设备框架原理
; n$ O3 L4 J- K6 D# p, ~3 p
这两周都是学习RTT的硬件管理框架,刚好是在使用串口,现在深入代码,跟踪一下框架启动加载流程

% P& \3 `+ A/ }
理论知识:RTT共分4层,
最上一次是是APP,也就是任务级的,往下是DEVICE层,再往下是设备驱动层,再往下是底层硬件层。看图

! v, Q- q' C6 b7 Y1 A5 |3 x$ c
io-dev.png
一、初始注册过程
RTT中,跟踪代码,在4.0版本中,执行MAIN前,初始化的函数是Kernel目录中的components.c中,
21.jpg
进入rtthread_startup();
3.jpg
进入板级初始化,这里会进入drv_common.c文件了
4.jpg
选择串口初始化函数rt_hw_usart_init(),又进入下一层,进入drv_usart.c文件,这里面定义串口的一些控制结构体,后面rt_hw_serial_register这个函数注册进系统,跟进这个函数
5.jpg
进入rt_hw_serial_register函数,这里会进入串口驱动框架层了,位于serial.c文件,继续跟进里面的rt_device_register函数
6.jpg
进入rt_device_register后,可以看到注册到系统了
7.jpg

9 ^& |' D& u0 `4 O% v2 _
5 Q% s3 v" B( G* z1 T+ g  e
二、APP 使用串口过程。打开,读写过程
1、查找串口设备
   /* 查找系统中的串口设备 */
   uart_device = rt_device_find(PM25_USE_UART);
   2 对串口参数进行设置
if (RT_EOK !=rt_device_control(uart_device, RT_DEVICE_CTRL_CONFIG,(void*)&pm25_use_config))
    {
       rt_kprintf("uart config failed.\n");
       return RT_ERROR;
    }
3 打开串口设备
if (uart_open(uart_device) != RT_EOK)
    {
       rt_kprintf("uart open error.\n");
       return RT_ERROR;
    }
后面就可以正常读写
0 Q0 y2 z- X9 h/ u5 P5 D& \

; f& K0 b, _0 V4 h6 i$ d: n
) H9 d$ b6 S  l* S
//////////////////////////////////////////////////////////////////////
9 |9 `# F1 X) f5 B' o1 ]' m. q
1 c3 U  u- m9 }2 s
打开串口过程分析:打开串口过来比较复杂,先看一个系统 调用图
00.jpg

: g5 I+ e" G# Q
可以看到分层调用关系。2个底层函数HAL_UART_Init函数
88.jpg

/ z+ c: @. S/ E1 j) m/ }. ]7 K) U
以及HAL_UART_MspInit函数,这里是最底层串口脚定义,设置参数这些。
$ R3 J& K3 Q) x: ]
99.jpg

3 w# V$ T  F6 U, ]  x) U: c  j" I
总结:RTT的系统框架为了保证移植性,分层设计,各层修改相互影响比较小,这样在硬件迁移时改动会比较小,这个是优点。但层层包装,增加了系统复杂性,阅读理解还是要花点时间。

0 p/ ?+ \, D, s% j8 A" {( ~/ q3 x4 x2 s  R5 p
第二周任务,写2个线程,分别打印2个传感器的信息,成功后,正常打印出来
01.jpg

% p  p, z2 i9 n7 q0 M/ P7 h
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

快速回复 返回顶部 返回列表