⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于TI的2407移植的ucos程序范例
💻 C
字号:

/*********************************************************************************
* 文件名 : Main.c
* 作  者 : 尹叶丹(yinyedan),Postgraduate, yinyedan@163.com,2003,8,19
*					Automation School,Wuhan University of Technology 
***********************************************************************************
*/
/**********************************************************************************
* 主函数建立两个任务,优先级分别为3和4,任务的切换采用消息邮箱通信机制.
* 位与IOPB0的指示灯在每个任务中亮或灭,并延时1秒,因此可以很清楚的看到这两个任务的切换.
* 编译采用TI CCS Ver4.10.36仿真软件,本移植程序在TMS320LF2407中运行正常.
**********************************************************************************
*/
#include "includes.h" 
#include "global.c"    

OS_STK TaskStk[2][70];   /*任务堆栈*/
OS_EVENT *pTask1MailBox;
OS_EVENT *pTask2MailBox;  /*消息邮箱*/ 
void LedTask1(void *data);
void LedTask2(void *data); 
unsigned char num=0;
/*主程序*/
main()                 
{ 
    SystemInit();   
    MCRA=MCRA&0xFEFF;                 
	asm(" NOP ");
    PBDATDIR=0x0100; 
    OSInit();                         
    pTask1MailBox = OSMboxCreate((void*)0);
    pTask2MailBox = OSMboxCreate((void*)0);   /*    建立消息邮箱 */
    OSTaskCreate(LedTask1,(void*)0,(void*)&TaskStk[0][20],3);
    OSTaskCreate(LedTask2,(void*)0,(void*)&TaskStk[1][20],4);
    OSStart();        					/*启动系统*/
}
void LedTask1(void *data)
{
	INT8U count=0;	
	INT8U error;
	data=data;
	OSTickInit();   
	while(1)
	{
	   for(count=0;count<10;count++)
	   {
	   	 OSMboxPost(pTask1MailBox,(void*)&count);
	   	 OSMboxPend(pTask2MailBox,0,&error);
	   	 PBDATDIR=0x0101;               /*置高,灯亮*/ 
	   	 OSTimeDlyHMSM(0,0,0,500);     

	   }
	}
} 
void LedTask2(void *data)
{
    INT8U *count;
    INT8U error; 
    data=data;
    while(1)
    {
        nn=15;
        count=(INT8U*)OSMboxPend(pTask1MailBox,0,&error);
      				/*等待第一个邮箱中的消息并返回消息*/   
      	nn=*count;
      	PBDATDIR=0x0100;
        OSTimeDlyHMSM(0,0,0,500);			
        OSMboxPost(pTask2MailBox,(void*)&count);  
    }
} 
 
void c_int1()
{

	  asm(" CLRC INTM ");
}

void c_int2()
{
	unsigned int count=0;
	if(PIVR!=0x27)
		{  	asm(" CLRC INTM ");
			return;
		}
	T1CNT=0;   
	OSTimeTick();
	OSIntEnter();  


//	OSMboxPost(pAdQMbox,(void*)&count); 


	EVAIFRA=0x80; 
	OSIntExit();
    asm(" CLRC	INTM ");
	
}
		

⌨️ 快捷键说明

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