RT-Thread学习笔记(7)- 堆的初始化和使用-转

对于这部分课程的学习,主要使用的是RTT的API函数进行操作。

对于堆的空间大小,是需要自己分配大小的,以STM32为例,下图标出了堆的设置大小:

RT-Thread学习笔记(7)- 堆的初始化和使用-转_第1张图片

下面聊聊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);
任务挂起与恢复
 
rt_thread_suspend(tid);
 
rt_thread_resume (tid);
操作系统进入/退出“临界区”的功能代码:
 
rt_enter_critical ();
 
rt_exit_critical ();
ENTER ISR
 
rt_interrupt_enter();
 
rt_interrupt_leave();
任务优先级:
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_sem_take();
rt_mutex_take();
rt_event_recv();
rt_mb_recv();
rt_mq_recv();
发送事件
rt_sem_release();
rt_mutex_release();
rt_event_send();
rt_mb_send_wait();
rt_mq_send();
rt_mq_urgent();
无等待获得事件
rt_sem_trytake();
   
rt_mb_send();
 
查询事件状态
         
其他
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实现

 

你可能感兴趣的:(RTT)