ucos两个任务同时访问全局变量 死机的问题
基本功能思路如下:采用的是ucos系统
两个串口,一个串口UART1收上位机的数据包,另一个串口USART2重新打包后发给下位机;
任务1 将USART收到的数据包放入一个队列FIFO,
任务2 定时读取FIFO的数据包转发给下位机
void USART1_IRQHandler (void)
{//串口1中断
....
OSSemPost(BeginRcv);一个数据包收完后发送一个信号给任务1处理
}
void TaskWithHost(void * data) //与上位机通信任务
{
OSSemPend(BeginRcv,0, &err);//等待处理信号量
....其中有这样一个处理
en_queue(&FIFO_SlaveCRT, (u8 *)&e, sizeof(struct event));//放入FIFO队列
}
void TaskWithSlaveCRT1(void * data)//转发下位机任务
{
...
len=queue_len(&FIFO_SlaveCRT);//读取队列的数据包长度
..//重新打包转发给下位机
DLY10MS(10);
}