欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UCOSIII再学习——1

程序员文章站 2022-07-12 09:14:54
...
创建一个任务:
//创建主任务
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);


相关标签: UCOSIII

上一篇: spring 再学习 1

下一篇: 查找