UCOSIII再学习——1

创建一个任务:
//创建主任务
OSTaskCreate((OS_TCB 	* )&Main_TaskTCB,		
			 (CPU_CHAR	* )"Main task", 		
			 (OS_TASK_PTR )main_task, 			
			 (void		* )0,					
			 (OS_PRIO	  )MAIN_TASK_PRIO,     
			 (CPU_STK   * )&MAIN_TASK_STK[0],	//堆栈地址起始	
			 (CPU_STK_SIZE)MAIN_STK_SIZE/10,	//堆栈深度通常为堆栈大小的十分之一	
			 (CPU_STK_SIZE)MAIN_STK_SIZE,		//堆栈大小		
			 (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_TMR		tmr1;	//定义一个定时器
//创建定时器1(当有时间延迟时,执行完一次时间延迟之后,每个周期再按照时间周期执行,单次还是循环则由周期模式决定)
OSTmrCreate((OS_TMR		*)&tmr1,		//定时器1
			(CPU_CHAR	*)"tmr1",		//定时器名字
			(OS_TICK	 )0,			//0ms			时间延迟
			(OS_TICK	 )50,          	//50*10=500ms	时间周期
			(OS_OPT		 )OS_OPT_TMR_PERIODIC, //周期模式
			(OS_TMR_CALLBACK_PTR)tmr1_callback,//定时器1回调函数
			(void	    *)0,			//参数为0
			(OS_ERR	    *)&err);		//返回的错误码

	定时器回调函数:
	void tmr1_callback(void *p_tmr,void *p_arg)
	

创建一个互斥信号量:OS_MUTEX	TEST_MUTEX;						//定义一个互斥信号量
创建一个信号量:	OS_SEM		MY_SEM;							//定义一个信号量,用于访问共享资源
请求信号量:OSSemPend(&MY_SEM,0,OS_OPT_PEND_BLOCKING,0,&err); 	//请求信号量,此时别的任务不能访问共享资源
			memcpy(share_resource,task2_str,sizeof(task2_str));	//向共享资源区拷贝数据,将数据拷贝到共享资源区域
发送信号量:OSSemPost (&MY_SEM,OS_OPT_POST_1,&err);				//发送信号量,释放完成之后别的任务才能访问

OSSemPost发送一次信号量MY_SEM.Ctr++;
OSSemPend请求一次信号量MY_SEM.Ctr--;当OSSemPend请求一次后,当再次运行到到该函数时,如果没有OSSemPost则阻塞到该地方,

任务内嵌信号量:
请求信号量:	OSTaskSemPend(0,OS_OPT_PEND_BLOCKING,0,&err);			//请求任务内建的信号量
发送信号量:	OSTaskSemPost(&Task2_TaskTCB,OS_OPT_POST_NONE,&err);	//使用系统内建信号量向任务task2发送信号量


创建一个消息队列  :OS_Q 		DATA_Msg;				//定义一个消息队列,用于发送数据
消息队列剩余的个数:(总的-用的)DATA_Msg.MsgQ.NbrEntriesSize-DATA_Msg.MsgQ.NbrEntries
发送消息:
	OSQPost((OS_Q*		)&KEY_Msg,		
			(void*		)&key,
			(OS_MSG_SIZE)1,
			(OS_OPT		)OS_OPT_POST_FIFO,
			(OS_ERR*	)&err);
请求消息:
	//请求消息KEY_Msg
	key=OSQPend((OS_Q*			)&KEY_Msg,   
				(OS_TICK		)0,
				(OS_OPT			)OS_OPT_PEND_BLOCKING,
				(OS_MSG_SIZE*	)&size,		
				(CPU_TS*		)0,
				(OS_ERR*		)&err);

事件标志组:
#define KEY0_FLAG		0x01
#define KEY1_FLAG		0x02
#define KEYFLAGS_VALUE	0X00						
OS_FLAG_GRP	EventFlags;		//定义一个事件标志组

	flags_num=OSFlagPost((OS_FLAG_GRP*)&EventFlags,
						 (OS_FLAGS	  )KEY0_FLAG,
						 (OS_OPT	  )OS_OPT_POST_FLAG_SET,
						 (OS_ERR*	  )&err);
	flags_num=OSFlagPost((OS_FLAG_GRP*)&EventFlags,
						 (OS_FLAGS	  )KEY1_FLAG,
						 (OS_OPT	  )OS_OPT_POST_FLAG_SET,
						 (OS_ERR*     )&err);
	OSFlagPend((OS_FLAG_GRP*)&EventFlags,
			   (OS_FLAGS	)KEY0_FLAG+KEY1_FLAG,
			   (OS_TICK     )0,
			   (OS_OPT	    )OS_OPT_PEND_FLAG_SET_ALL+OS_OPT_PEND_FLAG_CONSUME,
			   (CPU_TS*     )0,
			   (OS_ERR*	    )&err);
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值