对于这部分课程的学习,主要使用的是RTT的API函数进行操作。
对于堆的空间大小,是需要自己分配大小的,以STM32为例,下图标出了堆的设置大小:

下面聊聊RT-Thread的API。
1、rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END); 使用堆栈前必须用这个函数(在rt_config.h上声明宏)。
#ifdef RT_USING_HEAP
rt_system_heap_init((void *)HEAP_BEGIN, (void *)HEAP_END);
#endif
2、rt_malloc() ,填入你需要的字(32bit,4个字节)个数,然后返回分配后空间的指针。
void *rt_malloc(rt_size_t size)
3、rt_realloc(),用于给已经被分配内存补充分配内存。
4、rt_free(), 所有的动态内存分配使用完后,都要使用这个函数分配。
————————————————
| 二、
任务创建与删除:
分动态和静态方法,
动态方法:
rt_thread_create();
rt_thread_delete();
静态方法:
rt_thread_init();
rt_thread_detach();
真正开始运行多任务
rt_thread_startup(tid);
|
任务挂起与恢复
操作系统进入/退出“临界区”的功能代码:
ENTER ISR
任务优先级:
RT-Thread是值越小优先级越高,RT-Thread支持最多256级。
任务延时:
| |
rt_thread_delay ();延时ticks
|
事件:
RT-Thread
|
功能
|
|
|
|
|
|
|
|
静态方法:
rt_sem_init();
动态方法:
rt_sem_create();
|
静态方法:
rt_mutex_init ();
动态方法:
rt_mutex_create ();
|
静态方法:
rt_event_init ();
动态方法:
rt_event_create ();
|
静态方法:
rt_mb_init ();
动态方法:
rt_mb_create ();
|
静态方法:
rt_mq_init ();
动态方法:
rt_mq_create ();
|
|
|
静态方法:
rt_sem_detach();
动态方法:
rt_sem_delete();
|
静态方法:
rt_mutex_detach ();
动态方法:
rt_mutex_delete ();
|
静态方法:
rt_event_detach ();
动态方法:
rt_event_delete ();
|
静态方法:
rt_mb_detach ();
动态方法:
rt_mb_delete ();
|
静态方法:
rt_mq_detach ();
动态方法:
rt_mq_delete ();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rt_mq_send();
rt_mq_urgent();
|
|
|
|
|
|
|
|
|
查询事件状态
|
|
|
|
|
|
|
其他
|
rt_sem_control();
执行cmd,目前函数里面只有一个RT_IPC_CMD_RESET实现
|
rt_mutex_control();
目前函数直接返回err:
return -RT_ERROR;
|
rt_event_control();
执行cmd,目前函数里面只有一个RT_IPC_CMD_RESET实现
|
rt_mb_control();
执行cmd,目前函数里面只有一个RT_IPC_CMD_RESET实现
|
rt_mq_control();
执行cmd,目前函数里面只有一个RT_IPC_CMD_RESET实现
|
|