亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sosos_core.h

?? 基于AVR平臺的RTOS
?? H
字號:
/*=========================================================================================
項目名稱: 小型開源實時操作系統
軟件版本: VER 1.0
目標平臺: AVR系列單片機
工具鏈  : AVR-GCC(V4.1.2) WINAVR-20070525
開發人員: 韓驍
開發時間: 2007-07-05
版權    : GPL(GNU General Public License)
文件名稱: sosos.c
文件說明:
小型開源實時操作系統的核心包含文件
=========================================================================================*/
#ifndef __SOSOS_CORE_H
#define __SOSOS_CORE_H

#include "sosos_cfg.h"

#if SOSOS_TASK_ENALBE != 1
#define SOSOS_GET_TASK_ID_ENABLE 0//獲得認為ID
#define SOSOS_SUSPEND_TASK_ENABLE 0//任務掛起
#define SOSOS_RESUME_TASK_ENABLE 0//任務恢復
#define SOSOS_DELAY_TASK_ENABLE 0//任務延時
#endif

#if SOSOS_SEM_ENABLE != 1
#define SOSOS_LOGIC_SEM_ENABLE 0//邏輯型信號量
#define SOSOS_COUNT_SEM_ENABLE 0//計數型信號量
#define SOSOS_QUERY_SEM_ENABLE 0//查詢信號量
#endif

#if SOSOS_MUTEX_ENABLE != 1
#define SOSOS_QUERY_MUTEX_ENABLE 0//查詢互斥型信號量
#endif

#if SOSOS_FLAG_ENABLE !=1
#define SOSOS_QUERY_FLAG_ENABLE 0//查詢事件標志
#endif

#if SOSOS_TASK_ENALBE == 1
typedef struct SOSOS_TCB{
  SOSOS_ADDRESS TASK_STACK_POINT;//任務堆棧指針
#if STACK_SIZE_REPORT_ENABLE == 1
  SOSOS_ADDRESS TASK_STACK_BUTTON;//任務棧底
  unsigned int TASK_STACK_SIZE;//任務堆棧的大小
#endif
  unsigned char TASK_STATE;//任務狀態
  SOSOS_ADDRESS EVENT_INDICATION;//事件指示
  SOSOS_TIMEOUT_TYPE TASK_TIMEOUT;//超時定時器
  } SOSOS_TCB;//任務控制表結構
#endif
//任務狀態定義
#define TASK_STATE_TIMEOUT_OFFSET 0x70//事件延時推出標記偏移
#define TASK_STATE_OK    0x00//任務狀態正常
#define TASK_STATE_DELAY 0x10//等待延時,延時時間在EVENT_INDICATION內
#define TASK_STATE_SEM 0x11//等待信號量
#define TASK_STATE_MUTEX 0x12//等待互斥型信號量
#define TASK_STATE_FLAG 0x13//等待事件標志
#define TASK_STATE_SEM_TIMEOUT (TASK_STATE_SEM+TASK_STATE_TIMEOUT_OFFSET)
#define TASK_STATE_MUTEX_TIMEOUT (TASK_STATE_MUTEX+TASK_STATE_TIMEOUT_OFFSET)
#define TASK_STATE_FLAG_TIMEOUT (TASK_STATE_FLAG+TASK_STATE_TIMEOUT_OFFSET)

#if SOSOS_FLAG_ENABLE ==1
typedef struct SOSOS_EVENT_FLAG{
  SOSOS_FLAG_TYPE *FLAG_POINT;//事件標志組指針
  SOSOS_FLAG_TYPE FLAG_WAIT;//等待的事件標志狀態
  SOSOS_FLAG_TYPE FLAG_MSK;//事件標志屏蔽(為1的位有效)
  } SOSOS_EVENT_FLAG;//事件標志結構
#endif

#if SOSOS_MUTEX_ENABLE == 1
typedef struct SOSOS_MUTEX{
  SOSOS_ADDRESS NEXT_MUTEX;//指向下一個互斥型信號量
  unsigned char INHERIT_PRI;//繼承的優先級
  unsigned char OWN_TASK_PRI;//擁有任務的優先級
  unsigned char OWN_TASK_ID;//擁有任務的ID
  unsigned char MUTEX_VALUE;//互斥型信號量的值
  }SOSOS_MUTEX;//互斥型信號量
SOSOS_MUTEX *SOSOS_MUTEX_POINT;//互斥型信號量鏈表頭指針
#endif

volatile unsigned char SOSOS_TASK_READY[SOSOS_PRI_MAX];//任務就緒表
SOSOS_TCB TCB[SOSOS_PRI_MAX*SOSOS_MAX_TASK_PER_PRI];//任務控制塊
unsigned char SOSOS_TASK_STACK[SOSOS_TASK_STACK_SIZE];//任務堆棧
SOSOS_ADDRESS SOSOS_TASK_STACK_TOP;//任務堆棧頂

#if SOSOS_MUTEX_ENABLE == 1
register unsigned char SOSOS_RUNNING_INHERIT_PRI asm("r6"); //繼承后的優先級
#endif
register unsigned char SOSOS_TICKS asm("r7"); //時鐘滴答計數器
register unsigned char SOSOS_TIMESLICE asm("r8"); //時間片寄存器
register unsigned char SOSOS_WAIT_TASK asm("r9"); //等待任務優先級標識
register unsigned char SOSOS_RUNNING_TASK_PRI asm("r10");//當前任務優先級
register unsigned char SOSOS_RUNNING_TASK_ID asm("r11"); //當前任務ID
register unsigned char SOSOS_RUNNING_TASK_ID_INDEX asm("r12"); //當前任務ID索引
volatile register unsigned char SOSOS_INT_NEST asm("r13"); //中斷嵌套計數器
register unsigned char SOSOS_INT_SP_L asm("r14"); //中斷堆棧指針
register unsigned char SOSOS_INT_SP_H asm("r15"); //中斷堆棧指針
volatile register unsigned char SOSOS_STATE asm("r17"); //系統狀態字節
//SOSOS_STATE定義
#define STATE_SCHED_REQ   0x00//任務調度請求
#define STATE_SCHED_RUN   0x01//任務調度中

void SososSched(void);//任務調度

//中斷操作
#define DISABLE_INTERRUPT()\
  __asm__ __volatile__("CLI \n\t")
#define ENABLE_INTERRUPT()\
  __asm__ __volatile__("SEI \n\t")
//臨界區操作
#define ENTER_CRITICAL()\
  __asm__ __volatile__("IN __tmp_reg__,__SREG__ \n\t");\
  __asm__ __volatile__("CLI \n\t");\
  __asm__ __volatile__("PUSH __tmp_reg__ \n\t")
#define EXIT_CRITICAL()\
  __asm__ __volatile__("POP __tmp_reg__ \n\t");\
  __asm__ __volatile__("OUT __SREG__,__tmp_reg__ \n\t")

//定義寄存器入棧宏
#define SOSOS_PUSH_REGISTER()\
  __asm__ __volatile__("PUSH __zero_reg__ \n\t");\
  __asm__ __volatile__("PUSH __tmp_reg__ \n\t");\
  __asm__ __volatile__("PUSH R16 \n\t");\
  __asm__ __volatile__("IN R16,__SREG__ \n\t");\
  __asm__ __volatile__("PUSH R16 \n\t");\
  __asm__ __volatile__("EOR __zero_reg__,__zero_reg__ \n\t");\
  __asm__ __volatile__("PUSH R18 \n\t");\
  __asm__ __volatile__("PUSH R19 \n\t");\
  __asm__ __volatile__("PUSH R20 \n\t");\
  __asm__ __volatile__("PUSH R21 \n\t");\
  __asm__ __volatile__("PUSH R22 \n\t");\
  __asm__ __volatile__("PUSH R23 \n\t");\
  __asm__ __volatile__("PUSH R24 \n\t");\
  __asm__ __volatile__("PUSH R25 \n\t");\
  __asm__ __volatile__("PUSH R26 \n\t");\
  __asm__ __volatile__("PUSH R27 \n\t");\
  __asm__ __volatile__("PUSH R30 \n\t");\
  __asm__ __volatile__("PUSH R31 \n\t");\
  __asm__ __volatile__("PUSH R28 \n\t");\
  __asm__ __volatile__("PUSH R29 \n\t")

#define SOSOS_PUSH_REGISTER_NO 18//入棧的寄存器數量
//定義寄存器出棧宏
#define SOSOS_POP_REGISTER()\
  __asm__ __volatile__("POP R29 \n\t");\
  __asm__ __volatile__("POP R28 \n\t");\
  __asm__ __volatile__("POP R31 \n\t");\
  __asm__ __volatile__("POP R30 \n\t");\
  __asm__ __volatile__("POP R27 \n\t");\
  __asm__ __volatile__("POP R26 \n\t");\
  __asm__ __volatile__("POP R25 \n\t");\
  __asm__ __volatile__("POP R24 \n\t");\
  __asm__ __volatile__("POP R23 \n\t");\
  __asm__ __volatile__("POP R22 \n\t");\
  __asm__ __volatile__("POP R21 \n\t");\
  __asm__ __volatile__("POP R20 \n\t");\
  __asm__ __volatile__("POP R19 \n\t");\
  __asm__ __volatile__("POP R18 \n\t");\
  __asm__ __volatile__("POP R16 \n\t");\
  __asm__ __volatile__("OUT __SREG__,R16 \n\t");\
  __asm__ __volatile__("POP R16 \n\t");\
  __asm__ __volatile__("POP __tmp_reg__ \n\t");\
  __asm__ __volatile__("POP __zero_reg__ \n\t")

//定義中斷宏
#define SOSOS_ISR(vector)\
void vector (void) __attribute__ ((signal,naked));\
void vector (void)
//進入中斷
#define SOSOS_ENTER_INTERRUPT()\
SOSOS_PUSH_REGISTER();\
if(SOSOS_INT_NEST==0){\
  if(test_0(SOSOS_STATE,STATE_SCHED_RUN)){\
    TCB[SOSOS_RUNNING_TASK_PRI*SOSOS_MAX_TASK_PER_PRI+SOSOS_RUNNING_TASK_ID].TASK_STACK_POINT=SP;\
    }\
  __asm__ __volatile__("IN r30 ,__SP_L__ \n\t");\
  __asm__ __volatile__("IN r31 ,__SP_H__ \n\t");\
  __asm__ __volatile__("OUT __SP_L__,r14 \n\t");\
  __asm__ __volatile__("OUT __SP_H__,r15 \n\t");\
  __asm__ __volatile__("PUSH R30 \n\t");\
  __asm__ __volatile__("PUSH R31 \n\t");\
  }\
  SOSOS_INT_NEST++
//離開中斷
#define SOSOS_EXIT_INTERRUPT()\
DISABLE_INTERRUPT();\
if(SOSOS_INT_NEST>0)\
  SOSOS_INT_NEST--;\
if(SOSOS_INT_NEST==0){\
  __asm__ __volatile__("POP R31 \n\t");\
  __asm__ __volatile__("POP R30 \n\t");\
  __asm__ __volatile__("OUT __SP_L__,r30 \n\t");\
  __asm__ __volatile__("OUT __SP_H__,r31 \n\t");\
  if(test_1(SOSOS_STATE,STATE_SCHED_REQ)){\
    if(test_0(SOSOS_STATE,STATE_SCHED_RUN)){\
      SososSched();\
      }\
    }\
  }\
SOSOS_POP_REGISTER();\
__asm__ __volatile__("RETI \n\t")

#endif //__SOSOS_CORE_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
777奇米四色成人影色区| 亚洲国产中文字幕在线视频综合 | 激情都市一区二区| 粉嫩av一区二区三区粉嫩| 91激情五月电影| 制服丝袜在线91| 国产欧美一区二区在线观看| 亚洲精品免费在线播放| 日本sm残虐另类| 粉嫩一区二区三区性色av| 精品视频在线免费观看| 久久亚洲二区三区| 一区二区成人在线视频| 经典三级一区二区| 91啪亚洲精品| 精品精品欲导航| 亚洲免费高清视频在线| 蜜桃视频一区二区三区在线观看| 成人做爰69片免费看网站| 91麻豆精品国产无毒不卡在线观看| 亚洲国产成人一区二区三区| 亚洲成人黄色小说| 大尺度一区二区| 91精品国产入口在线| 中文字幕一区二区三区蜜月| 美洲天堂一区二卡三卡四卡视频| www.色精品| 久久久天堂av| 五月婷婷色综合| 91在线国产观看| 精品国产一区二区三区av性色 | 94-欧美-setu| 欧美哺乳videos| 亚洲午夜电影网| av亚洲精华国产精华| 久久尤物电影视频在线观看| 亚洲小少妇裸体bbw| eeuss国产一区二区三区| 精品国产一区二区三区久久久蜜月| 亚洲一区日韩精品中文字幕| 粉嫩一区二区三区性色av| 日韩欧美一区在线| 亚洲网友自拍偷拍| 不卡在线视频中文字幕| 国产视频视频一区| 蜜臀精品一区二区三区在线观看 | 日本美女一区二区三区| 91老师片黄在线观看| 国产视频一区二区在线| 黄色日韩网站视频| 欧美在线不卡一区| 奇米亚洲午夜久久精品| 日本精品视频一区二区| 欧美韩国日本不卡| 国产毛片精品视频| 国产欧美日韩不卡免费| 韩国v欧美v日本v亚洲v| 91麻豆精品国产91久久久久久 | 洋洋成人永久网站入口| 波多野结衣亚洲一区| 久久久www成人免费无遮挡大片| 日本大胆欧美人术艺术动态| 欧美高清激情brazzers| 久久精品国产免费| 欧美理论片在线| 狠狠色综合色综合网络| 91网上在线视频| 久久久久久久网| 捆绑紧缚一区二区三区视频| 久久综合中文字幕| 欧美美女一区二区三区| 91黄色免费版| 亚洲主播在线观看| 国产成人在线电影| 日韩视频123| 久久精品99久久久| 日韩免费一区二区| 国产精品欧美一级免费| 精品久久一区二区三区| 国产盗摄一区二区三区| 亚洲激情在线播放| 日韩一区二区免费高清| 欧美日韩视频在线第一区| 久久精品视频一区| 久热成人在线视频| 亚洲国产精品v| 日韩免费高清视频| 不卡大黄网站免费看| 不卡视频免费播放| 97成人超碰视| 日韩一级免费一区| 国产欧美日韩另类视频免费观看| 中文字幕在线观看不卡| 亚洲尤物在线视频观看| 久久国产夜色精品鲁鲁99| 粉嫩一区二区三区在线看| 精品视频在线免费| 国产三级欧美三级日产三级99| 99精品欧美一区二区三区小说 | 国产欧美精品一区二区三区四区| 欧美一区二区三区四区高清| 色菇凉天天综合网| 日本高清不卡在线观看| av成人免费在线观看| 9人人澡人人爽人人精品| 成人免费精品视频| youjizz国产精品| av亚洲精华国产精华精华| av电影天堂一区二区在线| jlzzjlzz国产精品久久| eeuss鲁一区二区三区| 99麻豆久久久国产精品免费 | 国产综合久久久久久久久久久久| 婷婷开心久久网| 日韩国产欧美在线观看| 美女在线一区二区| 国产一区二区三区在线观看免费| 免费观看久久久4p| 国产麻豆成人精品| 成人免费视频一区二区| 97国产一区二区| 久久嫩草精品久久久久| 樱桃视频在线观看一区| 成人性色生活片免费看爆迷你毛片| 3751色影院一区二区三区| 一区二区激情小说| 色婷婷av一区二区| 亚洲三级免费电影| 成人app下载| 自拍偷拍国产精品| 成人免费观看av| 中文字幕久久午夜不卡| 国产91高潮流白浆在线麻豆| 久久婷婷国产综合精品青草| 久久99国产精品麻豆| 日韩精品综合一本久道在线视频| 日产欧产美韩系列久久99| 欧美一区二区三区播放老司机| 手机精品视频在线观看| 日韩一区二区免费在线电影| 麻豆91在线看| 久久九九99视频| 99久久777色| 亚洲h动漫在线| 欧美va亚洲va| 成人黄色电影在线| 亚洲精品国产高清久久伦理二区| 色成人在线视频| 日韩电影在线一区二区三区| 精品久久久久久无| 99国产欧美另类久久久精品| 亚洲成人动漫在线观看| 欧美tk—视频vk| 91在线国内视频| 日本在线不卡一区| 国产精品理论片| 日韩亚洲欧美成人一区| 成人在线一区二区三区| 亚洲电影在线免费观看| 国产日韩欧美高清在线| 欧美伊人久久久久久久久影院| 久久国产精品色婷婷| 亚洲久草在线视频| 久久综合色之久久综合| 欧美性猛交一区二区三区精品| 韩国成人福利片在线播放| 一区二区三区中文字幕精品精品 | 亚洲欧洲性图库| 久久99久久久久| 99精品国产一区二区三区不卡 | 欧美性一区二区| 亚洲自拍偷拍图区| 日韩一区二区三区视频在线| 亚洲精品中文字幕乱码三区| 国产目拍亚洲精品99久久精品| wwwwxxxxx欧美| 精品久久久久久久人人人人传媒| 欧美日韩大陆一区二区| 欧美性淫爽ww久久久久无| 91搞黄在线观看| 91免费国产视频网站| www.亚洲激情.com| 99精品国产91久久久久久| 99久久综合99久久综合网站| 成人一区二区三区中文字幕| 国产大陆a不卡| 国产精品自拍在线| 高潮精品一区videoshd| 成人免费毛片aaaaa**| 国产成人av一区| 成人免费视频一区二区| 不卡电影一区二区三区| 97se亚洲国产综合自在线观| 色综合久久综合网97色综合| 欧美在线免费视屏| 7777女厕盗摄久久久| 精品日韩在线一区| 国产亚洲欧美激情| 中文字幕在线观看不卡视频| 亚洲人妖av一区二区|