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 + -
显示快捷键?