|
发表于 2010-8-22 16:31:09
|
显示全部楼层
回复【78楼】lvhaian 安哥
【71楼】 disheng
这个问题比较有意思, 我看看.
-----------------------------------------------------------------------
今天用STM32F103VCT6 试了一下,也是这个现象。
发送:11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF
接收:11 22 33 44 55 66 77 08 19 2A 3B 4C 5D 6E 7F
原因:
stm32f10x_it.c 中
/*******************************************************************************
* Function Name : USART1_IRQHandler
* Description : This function handles USART1 global interrupt request.
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void USART1_IRQHandler(void)
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
// Send the received data to the PC Host
if (USART_InitStructure.USART_WordLength == USART_WordLength_8b)
{
QueueWrite((void *)buf_uart_to_usb, USART_ReceiveData(USART1)& 0x7F); //8位数据为什么要把最高位屏蔽呢???
}
else if (USART_InitStructure.USART_WordLength == USART_WordLength_9b)
{
QueueWrite((void *)buf_uart_to_usb, USART_ReceiveData(USART1) );
}
}
if(USART_GetITStatus(USART1, USART_IT_TXE) != RESET)
{
USART_SendData(USART1, USART1_Tx_Char);
Flag_UARTSendOver = 1;
// Disable the USART1 Transmit interrupt
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
}
} |
|