串口接收数据,在接收中断服务函数中:
判断串口是否接收成功,并且判断二值信号量是否有效:
if((USART_RX_STA&ox8000)&&(BinarySemaphore!=NULL))
其中USART_RX_STA是接受状态标志,BinarySemaphore是二值信号量句柄
判断完成后,释放二值信号量:
xSemaphoreGiveFromISR(BinarySemaphore,&xHigherPriorityTaskWoken)
如果需要的话,进行一次任务切换。
在任务函数中获取信号量:
err=xSemaphoreTake(BinarySemaphore,portMAX_DELAY)
然后读出串口接收缓存区USART_RX_BUF里面的信息