actobjframework-ht.h

来自「此文件是一个完整的发动机转速表,用步进电机实现指示功能,利用HOLTECK的HT」· C头文件 代码 · 共 45 行

H
45
字号
/********************************************************************************************************
* Filename   : ActObjFrameWork.h
* Programmer : Haven
* 描述: 基于优先级的多线程 头文件。
*********************************************************************************************************
*/
#ifdef  FRAMEWORK_GLOBALS
#define FRAMEWORK_EXT
#else
#define FRAMEWORK_EXT  extern
#endif
typedef INT8U FKEvent;
/*定义事件信号和事件标志组数据结构 
****    高四位用于事件标志组,每一位代表一事件,
****    低四位用于事件信号,1-15共15个事件码,0代表无事件。
****    事件标志置位和清除,prio为对就优先级,i只能是4,5,6,7 高四位
****    在可以位操作的RAM中可以直接单独定义位,以减少程序。
*/
//事件标志置位和清除
#define ActObjFlagSet(prio,i)  (ActObjEventFlag[prio-1] |= READY_SET_OR[i])
#define ActObjFlagClr(prio,i)  (ActObjEventFlag[prio-1] &= READY_CLR_AND[i])

//下面是被系统占用的事件信号
#define     EMPTY_SIG      0
#define     ENTRY_SIG      1   /**< 进入动作信号 */
#define     EXIT_SIG       2   /**< 退出动作信号 */
#define     INIT_SIG       3   /**< 初始转换信号 */
#define     TIMEOUT_SIG    4   /**< 时间事件信号 */
#define     KEYDOWN_SIG    5   /**< 按键事件信号 */
#define     USER_SIG       6   /**< 用户应用程序可以使用的第一个信号 */
//用户信号从这开始,事件信号最大为15。


FRAMEWORK_EXT INT8U ActObjReadySet;                           //高位优先级高

FRAMEWORK_EXT void ActObjScheduler(void);                     //调度,这个函数要循环执行
FRAMEWORK_EXT void ActObjSet(INT8U prio);                     //置就绪标志
FRAMEWORK_EXT void ActObjSetISR(INT8U prio);                  //置就绪标志(中断中)
FRAMEWORK_EXT void ActObjInit(void);
#if FK_EventFlag_EN
FRAMEWORK_EXT void ActObjEvtPost(INT8U prio, INT8U sig);      //发送事件信号
FRAMEWORK_EXT void ActObjEvtPostISR(INT8U prio, INT8U sig);   //发送事件信号
FRAMEWORK_EXT void ActObjEvtClr(INT8U prio);                  //清除事件信号
#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?