初级会员

- 积分
- 67
- 金钱
- 67
- 注册时间
- 2015-9-6
- 在线时间
- 8 小时
|
刚刚接触ucosii移植,想把串口收到的数据通过消息邮箱发送到其他任务处理,一直实现不了。串口收到数据以后发送一个信号量,其他任务可以解析,完成相应的操作。串口确实接收到了数据,但是发送消息邮箱的时候不知道怎么回事了。哪位师兄可以帮忙看下,谢谢啦!!!
/*串口1接收数据解析*/
void USART1_analysis(void)
{
u16 i;
if(USART_RX_STA&0x8000)
{
printf("%s",(unsigned char *)USART_RX_BUF); //打印串口收到的数据,可以实现
OSMboxPost(com1_msg,(void *)&USART_RX_BUF);//发送消息邮箱
OSSemPost(sem_led1);//发送信号量
}
for(i=0;i<1024;i++){USART_RX_BUF=0x00;}//接收缓冲区数组清零
USART_RX_STA=0;
}
//串口1数据解析任务
void com1_task(void *pdata)
{
INT8U err;
INT8U *msg;
pdata=pdata;
while(1)
{
msg=(unsigned char *)OSMboxPend(com1_msg,0,&err);//等待串口接收成功的邮箱消息
printf("%s",(unsigned char *)msg);//打印邮箱接收到的数据,没有反应。
if(msg[0]=='1')//根据接收到的指令,控制灯的亮灭
{
LED1=0;
}
if(msg[0]=='2')
{
LED1=1;
}
delay_ms(100);//ucos系统延时
}
}
//LED灯任务,显示信号量操作
void led1_task(void *pdata)
{
u8 err;
while(1)
{
OSSemPend(sem_led1,0,&err);//接收到的信号量,可以实现功能
LED1=0;
delay_ms(200);
LED1=1;
delay_ms(800);
}
}
|
|