这段时间稍微折腾了一下stm32,稍微知道了一点stm32程序的编写方法,所以再次拿起了rtt,因为这个东西确实很强大。

随手记录一下rtt的一些知识:

1、关于finsh

这是一个命令行系统,很好玩,开始不知道怎么用的,输入help之类的毫无用处,后来发现按tab键就能出现帮助。命令格式不是一般想象中那样,而是类似于C语言函数,比如:显示进程,得这样写list_thread(),再比如控制LED亮灭,得这样写led(1,0),这样第2个led就灭了。当时确实折腾了我好一整子。另外,还可以将自己写的函数可以在finsh中调用,参考led.c的最后部分,用FINSH_FUNCTION_EXPORT宏,第一个参数是函数名,第二个参数是描述文字,不用双引号。

2、关于用Eclipse开发

官方wiki有篇用Eclipse开发的教程,说得很详细了。不过我试验了一下,最先的感觉是直接新成工程后会有一大堆的动态错误检测,编译却能通过,确实得关掉。另外,用jlink debug不是很方便,不过没关系,基本上用j-flash arm下载就行了。

3、关于线程的堆栈空间

为了多线程能够顺利执行,必须得为每个线程分配一定的堆栈空间,用于储存进程切换时的操作数据。至于空间得分配多少,据一篇文章介绍说,可以先分配高一点,然后用finsh再list_thread,即可看到"max used“使用了多少堆栈。当然,如果ram充足,多分配点也无妨。

4、RTT最简单应用

最简单应用莫过于创建一个新的线程了。参照led线程创建一个新的进程。

05-11 13:47