RTT常用API

RTT常用API
2018年12月29日
10:49

1.线程api
rt_thread_init 静态线程创建
rt_thread_detach 静态线程脱离

rt_thread_create 动态线程创建
rt_thread_delete 动态线程删除

rt_thread_startup 动/静态线程启动

2.进入临界资源所用api,2种方式,一种开关调度器实现,不关中断,此时来了中断还会响应但是那个调度器给锁了,自然调度器的软件中断pendsv就给锁了,不响应了,就不会发生任务切换,从而保护临界资源的访问。第二种,厉害了直接关全部中断,你调度器调度用的中断也不会响应了,只能等退出中断再响应了。我个人觉得第1种好吧起码还不会遗漏中断。

rt_enter_critical 锁调度器,不锁中断
rt_exit_critical 开调度器

rt_hw_interrupt_disable 关中断
rt_hw_interrupt_enable开中断

3.进出中断所用api(一般中断中用到RTT的函数时才加入,否则可加可不加,为方便使用是习惯可不管中断中用没用RTT的函数都加上),这样记录进出有利于OS自身调整。

rt_interrupt_enter 进入中断记录
rt_interrupt_leave 退出中断记录

4.设置空闲任务的钩子函数api
rt_thread_idle_sethook 设置空闲任务的钩子函数
这个形参传入的是函数指针。

可以设置的空闲任务钩子函数为:计算cpu使用率函数。计算原理是:它的思路是这样的,当程序运行空闲任务时,它会调用锁调度器,让它独享CPU,循环比如10个滴答时间统计我独占CPU这段时间的计数值,没错就是++计数值A,退出循环、开调度器锁,再循环10个滴答我再统计计数值B,那么(A-B)/A就是CPU的使用率,也就是1-空闲占用率=CPU使用率。其整体思路也就是:计算出我百分百占用CPU时的计数值A和线程正常调度时的计数值B。A-B就是线程占用的值,(A-B)/A就是线程的CPU使用率。

5.信号量api
rt_sem_init 静态创建信号量
rt_sem_detach 静态信号量脱离

rt_sem_create 动态创建信号量
rt_sem_delete 删除动态信号量

rt_sem_take 静/动态信号量获取信号量函数

rt_sem_release 释放静/动态信号量

6.互斥量api
rt_mutex_init 静态创建互斥量
rt_mutex_detach 静态互斥量脱离

rt_mutex_create 动态创建互斥量
rt_mutex_delete 删除动态互斥量

rt_mutex_take 静/动态互斥量获取信号量函数
rt_mutex_release 释放静/动态互斥量

7.邮箱api
rt_mb_init 静态创建邮箱
rt_mb_detach 脱离静态邮箱

rt_mb_create 动态创建邮箱
rt_mb_delete 删除动态邮箱

rt_mb_send 非阻塞方式发送邮件
rt_mb_send_wait 阻塞方式发送邮件
rt_mb_recv 接受邮件

8.消息队列api
rt_mq_init 静态创建消息
rt_mq_detach 脱离静态消息

rt_mq_create 动态创建消息
rt_mq_delete 删除动态邮箱消息

rt_mq_send 发送消息
rt_mq_ucgent 发送紧急消息

rt_mq_recv 接受消息

9.事件api
rt_event_init 静态初始化事件
rt_event_detach 脱离静态事件

rt_event_create 动态创建事件
rt_event_delete 删除动态事件

rt_event_send 发送事件
rt_event_recv 接受事件

10信号
rt_signal_install 安装信号
rt_signal_unmask 非屏蔽信号也就是标记信号、跟踪信号

rt_signal_kill 发送信号

11.定时器(软件或硬件定时器)
rt_timer_init 静态初始化定时器
rt_timer_detach 脱离静态定时器

rt_timer_create 动态创建定时器
rt_timer_delete 删除动态定时器

rt_timer_start 启动定时器
rt_timer_stop 停止定时器

rt_timer_control 控制定时器

12.内存池
rt_mp_init 静态创建邮箱内存池
rt_mp_detach 脱离静态内存池

rt_mp_create 动态创建的静态内存池
rt_mp_delete 删除动态创建的静态内存池

rt_mp_malloc 静态内存分配内存块(固定大小)
rt_mp_free 静态内存释放内存块

rt_malloc 动态内存分配(可分配任意大小,且不会挂起),属于动态内存管理
rt_realloc 在已分配动态内存块的基础上重新分配动态内存块的大小(增加或缩小)
rt_calloc 分配多内存块,从内存堆中分配连续内存地址的多个内存块。

rt_free 动态内存释放,不会唤醒挂起线程,这两个是动态内存管理。

rt_malloc_sethook设置分配钩子函数,在分配内存块过程中,用户可设置一个钩子函数。设置的钩子函数会在内存分配完成后进行回调。回调时,会把分配到的内存块地址和大小做为入口参数传递进去。
rt_free_sethook 设置内存释放钩子函数,在释放内存时,用户可设置一个钩子函数,设置的钩子函数会在调用内存释放完成前进行回调。回调时,释放的内存块地址会做为入口参数传递进去(此时内存块并没有被释放)。

你可能感兴趣的:(rt-thread,学习)