【RT-Thread】学习笔记-01-搭建第一个RTT基本工程

听说RTT有一点时间了,翻了下硬盘里的存档,发现第一次下载的资料都已经是15年了,额。。。

也有一段时间没在写STM32的代码了,过去花了太多时间在底层驱动上面,没有有方向性地往前学习,止步不前。

如愿成了一名所谓的硬件工程师,不过到现在也依然没法给自己所做的工作下一个较为明确的定义,嵌入式硬件,跟平时认识到的技术含量高的那些射频、电源、信号调理等领域的大牛相比差得不是一点点。

以单片机为主控的嵌入式硬件设计相对门槛可能会低一些,还可以通过基础入门之后通过经验积累来让工作得心应手一些,但是一直没法很明确自己工作的不可替代性的一面。

按照自身所认识到的应该深入的方向来看,每一个方向可能都没法像刚接手现在嵌入式硬件设计工作时那样,在较短时间内上手。现在不管是尝试去在哪个方向深入,都需要较长一点的时间,以及试错之后的重新尝试。并且现在用于额外学习的时间会相对少很多,也很难一段时间里专注于一件事情不受干扰。

所以还没抓住方向的时候,继续带一下这里的学习进度咯。毕竟自己一直想嵌入式这一套能打通,自己做点想做的东西。

呸呸呸,废话了。

--------------------------------  分钙线  ------------------------------

咳咳,那要搭建一个基本的RTT工程的第一步是,嗯。。。这个看手册啊手册上写得那么详细!

嗯,下午翻了翻手册和一些教程,总结起来,大概可以认为有三种开始一项工程的方法。

1. 直接使用RTT源码包里的bsp目录下对应的移植好的工程开始开发,这个应该是最棒的选择,不过我的板子用的是STM32F334,木有对应的。

2. 使用固件库+RTT源码包的形式自行创建工程,这个需要参照RTT的现有工程进行工程目录的准备。不过在尝试了一段时间终于0Error之后,发现F3/F4的串口驱动并不通用,懒得再先去写了。而且发现我的芯片是F334C6,FLASH只有32k,Keil直接提示空间不足。好,放弃。

3. CubeMx+Keil-Pack

    嗯,还是用了CubeMx+HAL库,虽然一直STD库很顺手,不过看着较新的芯片型号已经不再提供STD库了,并且其实Cube下的LL库还是非常喜欢的,还是跟上进步的步伐吧。

    首先生成好工程,并配置好串口,打个例行招呼。然后在Keil下,“Manage Run-Time Environment”中选上RTOS-RTT的kernel组件。


    好了,这个时候可以去掉工程原来的系统初始化步骤(时钟等),只保留要用到的串口相关初始化。

然后在死循环内不停向外打招呼并使用RTT的延时函数进行延时。


编译,下载,运行,OK。


这是因为RTT在用户main()之前已经完成了基本的初始化,

/* re-define main function */
int $Sub$$main(void)
{
    rt_hw_interrupt_disable();
    rtthread_startup();
    return 0;
}

在rtthread_startup()中RTT已经完成了基本的板级初始化和系统初始化,因此可以在用户main()里直接初始化并使用外设。

嗯,下一步学习RTT的驱动框架,OS线程相关放到后面。

猜你喜欢

转载自blog.csdn.net/JACK240541595/article/details/80302188