之前在其他的应用中可以正常工作,因为更换了硬件电路,在使能接收模式的时候会自动回复一个字符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),注释掉之后,可以正常的发送数据*/
- }
- }
|