FreeRtos 内核函数 cmsis_os函数一览
http://blog.csdn.NET/baidu_23187363/article/details/53876277
內(nèi)核控制函數(shù)
osStatus osKernelInitialize (void);???????????????????????//內(nèi)核初始化
osStatus osKernelStart (void);?????????????????????????//內(nèi)核開(kāi)始運(yùn)行
int32_t osKernelRunning(void);?????????????????????????//返回值為1表示正在運(yùn)行??作用:系統(tǒng)是否正常工作
uint32_t osKernelSysTick (void);????????????????????????//系統(tǒng)當(dāng)前節(jié)拍數(shù)?????作用:毫秒級(jí)計(jì)時(shí)
osKernelSysTickMicroSec(microsec)????????????????????????//微妙(宏函數(shù))?????作用:微秒級(jí)計(jì)時(shí)
線程管理函數(shù)
osThreadDef(name, thread, priority, instances, stacksz)???????????????????????//(宏函數(shù))????????作用:定義osThreadDef_t結(jié)構(gòu)體
osThread(name)???????????????????????????????????????????//(宏函數(shù))????????作用:獲取os_thread_def_##name結(jié)構(gòu)體的指針
osThreadId osThreadCreate (const osThreadDef_t *thread_def, void *argument);????????????//錯(cuò)誤返回NULL??????作用:創(chuàng)建線程
osThreadId osThreadGetId (void);??????????????????????????????????//返回當(dāng)前線程
osStatus osThreadTerminate (osThreadId thread_id);?????????????????????????//終結(jié)線程
osStatus osThreadYield (void);???????????????????????????????????//調(diào)度一次
osStatus osThreadSetPriority (osThreadId thread_id, osPriority priority);??????????????//設(shè)置線程優(yōu)先級(jí)
osPriority osThreadGetPriority (osThreadId thread_id);???????????????????????//獲取線程優(yōu)先級(jí)
等待函數(shù)
osStatus osDelay (uint32_t millisec);????????????????????????????????//毫秒級(jí)延時(shí)
osEvent osWait (uint32_t millisec);?????????????????????????????????//未實(shí)現(xiàn)
軟件定時(shí)器管理函數(shù)
osTimerDef(name, function)?????????????????????????????????????//宏函數(shù)?????????作用:定義os_timer_def_##name結(jié)構(gòu)體
osTimer(name)????????????????????????????????????????????//宏函數(shù)?????????作用:定義os_timer_def_##name結(jié)構(gòu)體的指針
osTimerId osTimerCreate (const osTimerDef_t *timer_def, os_timer_type type, void *argument);????//參數(shù)二:是否重復(fù)回調(diào)??作用:創(chuàng)建軟件定時(shí)器
osStatus osTimerStart (osTimerId timer_id, uint32_t millisec);???????????????????//開(kāi)始定時(shí)
osStatus osTimerStop (osTimerId timer_id);?????????????????????????????//停止定時(shí)
osStatus osTimerDelete (osTimerId timer_id);????????????????????????????//刪除定時(shí)器
信號(hào)管理函數(shù)
int32_t osSignalSet (osThreadId thread_id, int32_t signals);????????????????????//帶通知值的任務(wù)通知
int32_t osSignalClear (osThreadId thread_id, int32_t signals);???????????????????//未實(shí)現(xiàn)
osEvent osSignalWait (int32_t signals, uint32_t millisec);?????????????????????//參數(shù)二:取出值后位置零?作用:等待通知到來(lái)
互斥鎖管理函數(shù)
osMutexDef(name)??????????????????????????????????????????//(宏函數(shù))???????作用:定義os_mutex_def_##name結(jié)構(gòu)體
osMutex(name)????????????????????????????????????????????//宏函數(shù)?????????作用:定義os_mutex_def_##name結(jié)構(gòu)體的指針
osMutexId osMutexCreate (const osMutexDef_t *mutex_def);??????????????????????//創(chuàng)建互斥鎖
osStatus osMutexWait (osMutexId mutex_id, uint32_t millisec);????????????????????//鎖定互斥鎖
osStatus osMutexRelease (osMutexId mutex_id);????????????????????????????//解鎖互斥鎖
osStatus osMutexDelete (osMutexId mutex_id);????????????????????????????//刪除互斥鎖
信號(hào)量管理函數(shù)
osSemaphoreDef(name)????????????????????????????????????????//(宏函數(shù))???????作用:定義os_semaphore_def_##name結(jié)構(gòu)體
osSemaphore(name)??????????????????????????????????????????//宏函數(shù)?????????作用:定義os_semaphore_def_##name結(jié)構(gòu)體的指針
osSemaphoreId osSemaphoreCreate (const osSemaphoreDef_t *semaphore_def, int32_t count);???????//創(chuàng)建信號(hào)量
int32_t osSemaphoreWait (osSemaphoreId semaphore_id, uint32_t millisec);??????????????//信號(hào)量減一
osStatus osSemaphoreRelease (osSemaphoreId semaphore_id);??????????????????????//信號(hào)量加一
osStatus osSemaphoreDelete (osSemaphoreId semaphore_id);??????????????????????//刪除信號(hào)量
內(nèi)存池管理函數(shù)
osPoolDef(name, no, type)?????????????????????????????//參數(shù)二:內(nèi)存池size 參數(shù)三:成員size????作用:定義os_pool_def_##name結(jié)構(gòu)體
osPool(name)????????????????????????????????????????????//宏函數(shù)?????????作用:定義os_pool_def_##name結(jié)構(gòu)體的指針
osPoolId osPoolCreate (const osPoolDef_t *pool_def);????????????????????????//創(chuàng)建內(nèi)存池
void *osPoolAlloc (osPoolId pool_id);????????????????????????????????//分配內(nèi)存
void *osPoolCAlloc (osPoolId pool_id);???????????????????????????????//分配內(nèi)存并且清零
osStatus osPoolFree (osPoolId pool_id, void *block);????????????????????????//釋放內(nèi)存
隊(duì)列管理函數(shù)
osMessageQDef(name, queue_sz, type)????????????????????????//參數(shù)二:隊(duì)列size 參數(shù)三:成員size?????作用:定義os_messageQ_def_##name結(jié)構(gòu)體
osMessageQ(name)??????????????????????????????????????????//宏函數(shù)?????????作用:定義os_messageQ_def_##name結(jié)構(gòu)體的指針
osMessageQId osMessageCreate (const osMessageQDef_t *queue_def, osThreadId thread_id);???????//創(chuàng)建隊(duì)列
osStatus osMessagePut (osMessageQId queue_id, uint32_t info, uint32_t millisec);??????????//向隊(duì)列中放入消息
osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec);??????????????????//從隊(duì)列中獲取消息
郵箱隊(duì)列管理函數(shù)
osMailQDef(name, queue_sz, type)?????????????????????????//參數(shù)二:郵箱size 參數(shù)三:消息size?????作用:定義os_mailQ_def_##name結(jié)構(gòu)體
osMailQ(name)????????????????????????????????????????????//宏函數(shù)?????????作用:定義os_mailQ_def_##name結(jié)構(gòu)體的指針
osMailQId osMailCreate (const osMailQDef_t *queue_def, osThreadId thread_id);????????????//創(chuàng)建郵箱
void *osMailAlloc (osMailQId queue_id, uint32_t millisec);?????????????????????//分配一個(gè)消息的空間
void *osMailCAlloc (osMailQId queue_id, uint32_t millisec);?????????????????????//分配一個(gè)消息的空間并且清零??????????????????
osStatus osMailPut (osMailQId queue_id, void *mail);????????????????????????//將成員丟到郵箱中
osEvent osMailGet (osMailQId queue_id, uint32_t millisec);?????????????????????//從郵箱中獲取消息
osStatus osMailFree (osMailQId queue_id, void *mail);????????????????????????//釋放消息空間
特殊功能函數(shù)
void osSystickHandler(void);????????????????????????????????????//定時(shí)器中斷處理函數(shù)
osThreadState osThreadGetState(osThreadId thread_id);????????????????????????//獲取線程狀態(tài)
osStatus osThreadIsSuspended(osThreadId thread_id);?????????????????????????//線程是否被掛起??????????????????????
osStatus osThreadSuspend (osThreadId thread_id);??????????????????????????//掛起線程
osStatus osThreadResume (osThreadId thread_id);???????????????????????????//恢復(fù)調(diào)度
osStatus osThreadSuspendAll (void);?????????????????????????????????//掛起所有線程
osStatus osThreadResumeAll (void);?????????????????????????????????//恢復(fù)調(diào)度所有線程
osStatus osDelayUntil (uint32_t *PreviousWakeTime, uint32_t millisec);???????????????//絕對(duì)延時(shí)
osStatus osThreadList (uint8_t *buffer);??????????????????????????????//獲取任務(wù)信息?任務(wù)名、優(yōu)先級(jí)
osEvent osMessagePeek (osMessageQId queue_id, uint32_t millisec);??????????????????//瞥一眼隊(duì)列中有沒(méi)有消息
osMutexId osRecursiveMutexCreate (const osMutexDef_t *mutex_def);??????????????????//創(chuàng)建遞歸互斥鎖
osStatus osRecursiveMutexRelease (osMutexId mutex_id);???????????????????????//釋放遞歸互斥鎖
osStatus osRecursiveMutexWait (osMutexId mutex_id, uint32_t millisec);???????????????//鎖定遞歸互斥鎖
總結(jié)
以上是生活随笔為你收集整理的FreeRtos 内核函数 cmsis_os函数一览的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: FreeRTOS实验_独立看门狗监视多线
- 下一篇: Ubuntu 14.04安装JDK1.8