📄 main.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 + -