我这样修改程序,在中断里写接收到了2个字节的数据 就把标志位flagTxd置1,主函数里判断flagTxd是否置1,然后把数据给发出来,这样是收发没问题的,但是 if(UART_RX_NUM==2)这个计数的条件 我换成大于等1他就是一个字节正常收发,大于等于2他就是两个字节正常收发,多了少了都发的接受错误的数据,感觉 RX_MUN没有在2个函数同步操作,我想不通原因,纠结了好久,求教各位老师了。
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
if(UART1_GetITStatus(UART1_IT_RXNE)!= RESET)
RxBuffer[ UART_RX_NUM++] = UART1_ReceiveData8();
if(UART_RX_NUM==2)
{
flagTxd=1;
}
UART1_ClearITPendingBit(UART1_IT_RXNE);
int main( void )
{
u8 i,len1;
sysInit();
while(1)
{