CPU_SR_ALLOC(); OS_CPU_SR os_cpu_sr=0;这句是什么意思

查看源码OS_CRITICAL_METHOD 宏定义就知道了
#if OS_CRITICAL_METHOD == 3
#define  OS_ENTER_CRITICAL()  {cpu_sr = OS_CPU_SR_Save();}
#define  OS_EXIT_CRITICAL()   {OS_CPU_SR_Restore(cpu_sr);}
你调用临界区这两个接口必须要定义一个cpu_sr 变量的,这是宏决定的,否则也编译不过啊;其次作用这个变量是用来存放关中断前的状态寄存器的,看懂代码意思你也就知道这个局部变量只需定义,至于赋值0与否不重要

/************************************************* Function: main Description: 主函数 Input: 无 Output: 无 Others: 无 *************************************************/ int main(void) { /************************************************** 通道控制板新架构代码 ***************************************************/ // NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000); OS_ERR err; CPU_SR_ALLOC(); OSInit(&err); OS_CRITICAL_ENTER(); OSTaskCreate((OS_TCB *)&SystemInitTaskTCB, (CPU_CHAR *)"system init task", (OS_TASK_PTR )ZK_System_Init_Task, (void *)0, (OS_PRIO )ZK_TASK_PRIO_INIT, (CPU_STK *)&ZK_Task_STK_INIT[0], (CPU_STK_SIZE)ZK_STK_SIZE_TASK_INIT / 10, (CPU_STK_SIZE)ZK_STK_SIZE_TASK_INIT, (OS_MSG_QTY )0, (OS_TICK )0, (void *)0, (OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR), (OS_ERR *)&err); OS_CRITICAL_EXIT(); OSStart(&err); } /************************************************* Function: ZK_System_Init_Task Description: 系统初始化 Input: 无 Output: 无 Others: 无 *************************************************/ static void ZK_System_Init_Task(void) { HardwareInit(); //硬件相关初始化 SoftwareInit(); //软件相关初始化 ZKTaskInit(); SetKeyValue(VIRTUAL_KEY_START_UP); //屏幕显示 初始化中 StartUpFun(); } uint8_t Test_InitFinishFlag=0; void StartUpFun(void)//function { OS_ERR err; // IR_OutLogic_t IROutLogicData; // static uint8_t z=0; while(1) { if(Test_InitFinishFlag==0xFF) { CheckDistanceChange(current_sensor_address); //TOF距离判读和处理 ModifyPassNumber(); //显示 } else if(Test_InitFinishFlag==0) { SetKeyValue(VIRTUAL_KEY_STANDY); if(LCDGetPage()==LCD_PAGE_STANDY) { SystemParam.ParamIn
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值