初级会员

- 积分
- 101
- 金钱
- 101
- 注册时间
- 2013-4-20
- 在线时间
- 4 小时
|
发表于 2013-12-18 16:34:06
|
显示全部楼层
void USART3_IRQHandler(void)
{
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
u8 u8Char = '\0';
if(USART_GetFlagStatus(USART3, USART_FLAG_ORE) != RESET)
{
USART_ClearFlag(USART3, USART_FLAG_ORE);
u8Char = USART_ReceiveData(USART3);
}
if(USART_GetITStatus(USART3, USART_IT_RXNE) == SET)
{
u8Char = USART_ReceiveData(USART3);
USART_ClearITPendingBit(USART3, USART_IT_RXNE);
}
if(COM_HEADER != u8Char)
{
if(COM_END1 != u8Char)
{
GLOBAL_g_xMsg.acMessage[GLOBAL_g_xMsg.u8Column++] = u8Char;
}
else
{
GLOBAL_g_xMsg.acMessage[GLOBAL_g_xMsg.u8Column] = u8Char;
if(COM_END2 == GLOBAL_g_xMsg.acMessage[GLOBAL_g_xMsg.u8Column - 1])
{
if(GLOBAL_g_xMsg.acMessage[1] == 0x9B && GLOBAL_g_xMsg.acMessage[4] > 0 && GLOBAL_g_xMsg.acMessage[4] <= 0x12)
{
GLOBAL_g_xCurrentTime.u8Year = BCDtoDEC(GLOBAL_g_xMsg.acMessage[3]);
GLOBAL_g_xCurrentTime.u8Month = BCDtoDEC(GLOBAL_g_xMsg.acMessage[4]);
GLOBAL_g_xCurrentTime.u8Day = BCDtoDEC(GLOBAL_g_xMsg.acMessage[5]);
GLOBAL_g_xCurrentTime.u8Hour = BCDtoDEC(GLOBAL_g_xMsg.acMessage[7]);
GLOBAL_g_xCurrentTime.u8Minute = BCDtoDEC(GLOBAL_g_xMsg.acMessage[8]);
GLOBAL_g_xCurrentTime.u8Second = BCDtoDEC(GLOBAL_g_xMsg.acMessage[9]);
}
else
{
xSemaphoreGiveFromISR(GLOBAL_g_xUsart3Smp, &xHigherPriorityTaskWoken);
}
}
}
}
else
{
memset((void *)&GLOBAL_g_xMsg, (int) 0, sizeof(S_COMMessage));
GLOBAL_g_xMsg.acMessage[GLOBAL_g_xMsg.u8Column++] = u8Char;
}
portEND_SWITCHING_ISR(xHigherPriorityTaskWoken);
}
迪文的吧,正好手上有一点干货 |
|