中级会员
- 积分
- 396
- 金钱
- 396
- 注册时间
- 2015-1-23
- 在线时间
- 42 小时
|
楼主 |
发表于 2016-2-1 15:14:45
|
显示全部楼层
[mw_shl_code=c,true]//GPRS数据传输任务
//设置任务优先级
#define TR800_TASK_PRIO 9
//设置任务堆栈大小
#define TR800_STK_SIZE 512
//任务堆栈
OS_STK TR800_TASK_STK[TR800_STK_SIZE];
//任务函数
void TR800_task(void *pdata);
//超声波测距任务
//设置任务优先级
#define CHAOSHENG_TASK_PRIO 6
//设置任务堆栈大小
#define CHAOSHENG_STK_SIZE 64
//任务堆栈
OS_STK CHAOSHENG_TASK_STK[CHAOSHENG_STK_SIZE];
//任务函数
void CHAOSHENG_task(void *pdata);
//开始任务
void start_task(void *pdata)
{
OS_CPU_SR cpu_sr=0;
pdata = pdata;
msg_key=OSMboxCreate((void*)0); //创建消息邮箱
sem_beep=OSSemCreate(0); //创建信号量
OSStatInit(); //初始化统计任务.这里会延时1秒钟左右
OS_ENTER_CRITICAL(); //进入临界区(无法被中断打断)
OSTaskCreate(CHAOSHENG_task,(void *)0,(OS_STK*)&CHAOSHENG_TASK_STK[CHAOSHENG_STK_SIZE-1],CHAOSHENG_TASK_PRIO);
OSTaskCreate(TR800_task,(void *)0,(OS_STK*)&TR800_TASK_STK[TR800_STK_SIZE-1],TR800_TASK_PRIO);
OSTaskSuspend(START_TASK_PRIO); //挂起起始任务.
OS_EXIT_CRITICAL(); //退出临界区(可以被中断打断)
}
//超声波测距任务
int k=30;
void CHAOSHENG_task(void *pdata)
{
u8 time;
while(1)
{
CS_T1();
if(k<700)
{
if((TIM4->CNT>20)&&(TIM4->CNT<50))
{
time=TIM4->CNT;
if( ((time_buf-3)<time)&&(time<(time_buf+3)))
{
k++;
time_buf=time;
}
else
{
k=0;
time_buf=time;
}
}
}
else
{CS_T2();}
disbuff[0]=S/1000;
disbuff[1]=S%1000/100;
disbuff[2]=S%1000%100/10;
disbuff[3]=S%1000%10%10;
LCD_ShowNum(180,74,disbuff[0],1,16);
LCD_ShowNum(188,74,disbuff[1],1,16);
LCD_ShowNum(196,74,disbuff[2],1,16);
LCD_ShowNum(204,74,disbuff[3],1,16);
LCD_ShowString(212,74,200,16,16,"cm");
delay_ms(10);
}
}
//短信发送任务
void TR800_task(void *pdata)
{
while(1)
{
if(send_flag2==0x0f)
{
send_flag2=0x00;
if(sms_count==3)
{
send_flagMMS=1;
}
else
send_flagMMS=0;
sms_count--;
packSms_PDU(sms_count,pData_3,pData_4);
if(sms_count==0)
{
send_flag3=0x00;
send_flag4=0xff;
GPSOUT=1;
}
}
if((send_flag2==0xf0)&&(send_flag4==0xff))
{
send_flag2=0x00;
packSms_PDU(sms_count,pData_2,pData_4);
sms_count++;
if(sms_count==3)
{
send_flag4=0x00;
k=0;
send_flag3=0xff;
}
BEEP_BL(100);
}
delay_ms(10);
}
}[/mw_shl_code] |
|