“实验53 UCOSII实验3-消息队列、信号量集和软件定时器USER“例程中有一处不理解,特来请教大家!
//主任务
void main_task(void *pdata)
{
u32 key=0;
u8 err;
u8 tmr2sta=1; //软件定时器2开关状态
u8 tmr3sta=0; //软件定时器3开关状态
u8 flagsclrt=0; //信号量集显示清零倒计时
tmr1=OSTmrCreate(10,10,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)tmr1_callback,0,"tmr1",&err); //100ms执行一次
tmr2=OSTmrCreate(10,20,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)tmr2_callback,0,"tmr2",&err); //200ms执行一次
tmr3=OSTmrCreate(10,10,OS_TMR_OPT_PERIODIC,(OS_TMR_CALLBACK)tmr3_callback,0,"tmr3",&err); //100ms执行一次
OSTmrStart(tmr1,&err);//启动软件定时器1
OSTmrStart(tmr2,&err);//启动软件定时器2
while(1)
{
key=(u32)OSMboxPend(msg_key,10,&err));
.......
.......
分割线------------------------------
OSMboxPend(msg_key,10,&err))的返回值是void *的,为什么能直接进行(u32)处理呢?
按照我的理解应该写成key=*((u32*)OSMboxPend(msg_key,10,&err))才对啊,百思不得姐!
|