之前在其他的应用中可以正常工作,因为更换了硬件电路,在使能接收模式的时候会自动回复一个字符0,所以先使能接受模式后开启的接收中断,但是
利用串口调试助手周期发送字符,在串口中断中收到什么发送什么,但是在单步运行的时候可以正常收发,全局运行的时候有时收到的数正确有时就不正确,
大多数情况下收到的数据是错的,试着加了延时,还是不行,这种情况出现的原因有哪些呢?还请大神们指教啊!
void USART1_IRQHandler(void)
{
//接收中断
unsigned char temp_trx;
if(USART_GetITStatus(USART1,USART_IT_RXNE)==1)
{
OS_CPU_SR cpu_sr;
OS_ENTER_CRITICAL();
USART_ClearITPendingBit(USART1,USART_IT_RXNE); /*清接收中断标志*/
temp_trx=USART_ReceiveData(USART1); /*读取接收数据*/
St2Pt_EN();/*RS485使能 ST输出到Pt //转为输出模式*/
delay(10);
Uart1_SendByte(temp_trx); //*将接收到的数据发送出去*/
Pt2St_EN(); /*RS485使能 PT输出到St //发送完成之后改为接收状态*/
delay(10);
OS_EXIT_CRITICAL();
}
//发送完成中断
if(USART_GetITStatus(USART1,USART_IT_TXE)!=RESET)
{
USART_ClearITPendingBit(USART1,USART_IT_TC); /*清发送寄存器空标志*/
USART_ITConfig(USART1,USART_IT_TXE,DISABLE); /*DISABLE 发送完成中断 */
Pt2St_EN();/*RS485使能 PT输出到St。发送完成之后改为接收状态*/
/*此语句会触发一次接收中断(0xBB),注释掉之后,可以正常的发送数据*/
}
}
|