新手入门
- 积分
- 17
- 金钱
- 17
- 注册时间
- 2020-12-19
- 在线时间
- 9 小时
|

楼主 |
发表于 2020-12-26 00:30:35
|
显示全部楼层
/*
******************************************************************************************
*/
//应该是这段程序有bug,但是没找到具体是哪里的问题
static void UsartIRQ(USART_FIFO_Typedef *_pUsart)
{
if (USART_GetITStatus(_pUsart->usart, USART_IT_RXNE) != RESET)
{
uint8_t ch;
ch = USART_ReceiveData(_pUsart->usart);
_pUsart->pRxBuf[_pUsart->usRxWrite] = ch;
if (++_pUsart->usRxWrite >= _pUsart->usRxBufSize)
{
_pUsart->usRxWrite = 0;
}
if (_pUsart->usRxCount < _pUsart->usRxBufSize)
{
_pUsart->usRxCount++;
}
if (_pUsart->ReciveNew)
{
_pUsart->ReciveNew(ch);
}
}
if (USART_GetITStatus(_pUsart->usart, USART_IT_TXE) != RESET)
{
if (_pUsart->usTxCount == 0)
{
USART_ITConfig(_pUsart->usart, USART_IT_TXE, DISABLE);
USART_ITConfig(_pUsart->usart, USART_IT_TC, ENABLE);
}
else
{
USART_SendData(_pUsart->usart, _pUsart->pTxBuf[_pUsart->usTxRead]);
if (++_pUsart->usTxRead >= _pUsart->usTxBufSize)
{
_pUsart->usTxRead = 0;
}
_pUsart->usTxCount--;
}
}
else if (USART_GetITStatus(_pUsart->usart, USART_IT_TC) != RESET)
{
if (_pUsart->usTxCount == 0)
{
USART_ITConfig(_pUsart->usart, USART_IT_TC, DISABLE);
´
if (_pUsart->SendOver)
{
_pUsart->SendOver();
}
}
else
{
USART_SendData(_pUsart->usart, _pUsart->pTxBuf[_pUsart->usTxRead]);
if (++_pUsart->usTxRead >= _pUsart->usTxBufSize)
{
_pUsart->usTxRead = 0;
}
_pUsart->usTxCount--;
}
}
} |
|