高级会员

- 积分
- 504
- 金钱
- 504
- 注册时间
- 2012-4-26
- 在线时间
- 17 小时
|

楼主 |
发表于 2013-3-25 17:12:59
|
显示全部楼层
void USART1_IRQHandler(void)
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
/* Read one byte from the receive data register */
RxBuffer1 [RxCounter1] = USART_ReceiveData(USART1);
//USART_ClearITPendingBit(USART1, USART_IT_RXNE);
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);
USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
}
if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
{
/* Write one byte to the transmit data register */
USART_SendData(USART1, RxBuffer1[RxCounter1]);
USART_ClearITPendingBit(USART1, USART_IT_TC);
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
//TxBuffer=USART1->DR;
// printf("RxBuffer[%d]= %d\n",RxCounter,RxBuffer[RxCounter]);
RxCounter1++;
if(RxCounter1==5000)
{
RxCounter1=0;
}
}
}
将中断函数改为如上:
第一次上电发送一帧数据,如果第一字节为0Xff,第一次输出帧丢失第一字节OXFF,后面的字节都正确。在发送一次输出就正确也不丢数据
如果第一次上电发送一帧十六进制数据01 88 96 11,第一次输出40 CC 16 FC ,再发送一次输出正确数据01 88 96 11。
就是每次重新上电就有这种情况,软件复位都没这情况发生。 |
|