新手上路
- 积分
- 25
- 金钱
- 25
- 注册时间
- 2017-8-2
- 在线时间
- 36 小时
|
10金钱
void UART_Initializes(void)//初始化函数
{
UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_Cmd(ENABLE);
UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);
enableInterrupts();
}
//接收
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
u8 temp;
RecvCount = 0; while(UART1_GetITStaues(UART1_IT_RXNE) != RESET)
{
RecvBuf[RecvCount] = UART1_ReceiveData8(); //读取接收到的数据(该操作会自动清除中断接收标志)
RecvCount++;
TIMDelaNms(5);
}
TIMDelaNms(5);
UART1_SendNByte(RecvBuf,RecvCount); //发送接收到的数据
UART1_ClearITPendingBit(UART1_IT_RXNE);
}
发送函数是没有问题的,只能接收最多2Byte
|
最佳答案
查看完整内容[请看2#楼]
你的代码 串口中断每次进去之后 RecvCount = 0;这行代码就把数组下标变成0了,所以每次接收的数据都会放在数组第0位,后面接收的数据就会把前面的数据覆盖。
|