高级会员

- 积分
- 738
- 金钱
- 738
- 注册时间
- 2014-7-1
- 在线时间
- 180 小时
|

楼主 |
发表于 2016-5-13 13:17:20
|
显示全部楼层
void UART5_IRQHandler(void)
{
if(USART_GetITStatus( UART5 , USART_IT_RXNE ) != RESET)
{
USART5_RxBuffer[g_UART5_RxTail++] = USART_ReceiveData( UART5 );
g_UART5_RxTail&= USART5_RXBUF_LEN-1;
UART5_RecvLKJKJC(); //¶Ô′®¿ú5½óêÕμÄêy¾Y½øDD′|àí
}
if(USART_GetITStatus( UART5 , USART_IT_TC ) != RESET)
{
if(g_UART5_TxHead == g_UART5_TxTail) //·¢Ëííê3é
{
UART5_CON = 1; //¸Ä3é½óêÕ×′ì¬
USART_ITConfig(UART5, USART_IT_TC , DISABLE);
}else
{
USART_SendData( UART5, USART5_TxBuffer[g_UART5_TxHead++]);
g_UART5_TxHead &= USART5_TXBUF_LEN-1;
}
}
}
void UART5_SendStart(void)
{
UART5_CON = 0; //·¢Ëí
USART_ITConfig(UART5, USART_IT_TC , ENABLE);
}
这个是中断代码,我的发送函数只用把发送的数据写入发送缓冲区,之后调用void UART5_SendStart(void)函数就能发送,经过调试发现是刚开始发送一个空数据出去,之后才开始正正的发送数据,不知道是为什么? |
|