Microchip
直播中

李维兴

7年用户 204经验值
私信 关注
[问答]

版本1.08的USART读取字符后无法清除任何中断标志该怎么办?

我在一个项目中使用PIC32MX550F256H,现在我尝试从UART1 Rx到UART2 Tx获取任何东西,反之亦然。简单,对吧?与和谐1.062它工作正常,现在版本1.08我不能做到这一点。我需要帮助。问题是,一旦从UART2读取一个字符,它就好像不清除任何中断标志(应该清除),因为它总是重新进入ISR(即使每次读取NULL字符),所以我无法让它工作。甚至从旧的和声代码中复制部分到这个新的和声代码中,但仍然有。<代码>void>void_u ISR(_UART_1_VECTOR,ipl1AUTO)Inl1AUTO_IntHandHandHandDrVVVVVVVVVVVVVVVVVVVVVV读Byte()1;如果(!)DRV_USART1_TransmitBufferIsFull()){DRV_USART1_WRT1写入字节(接收字符)}{DRV_USART1_WRT1_Writ字节(接收字符)}{DRV_USART1_发送(DRV_USART1_传输BuRT1_传输缓冲器_传输缓冲器(接收字符);}DRV_DRV_USART_USART1_USART1_WRT1_WRTRTRTRTRT1_任务发送_任务发送(接收字符)}}}DRV_DRV_DRV_USART_USART_USART1_USART1_USART1_USART1_USART1_VVVVV1_VVVVV1_发送缓冲区1_发送DrvUsartinstance1(void){char ReceivedChar=DrviUsART1IReBead();DRV_USART0_TransmitBufferIsFull()){DRV_USART0_WriteByte(ReceivedChar);}DRV_USART_TasksTransmit(sysObj.drvUsart1);DRV_USART_TasksReceive(sysObj.drvUsart1);DRV_USART_TasksError(sysObj.drvUsart1);};ISR代码希望您能帮助我,并提前感谢

回帖(9)

张虎豹

2019-7-31 12:19:22
不要复制粘贴任何内容。迁移到和谐新版本的更安全的方法是使用新的和谐框架和相应的MHC重新生成项目。您使用新的和谐框架重新生成项目了吗?
举报

荣春梅

2019-7-31 12:36:08
是的,我已经用新的MHC/Harmony安装重新生成了,但是问题仍然存在。请注意,问题是USART端口只在我从一个读到另一个响应时才会卡住。这意味着,如果我从U1RX读取并写入该字符到U2TX,它会在8个字符之后被卡住,并无限期地发送第一个字符。如果我只使用一个UART por(U1Tx&U1Rx)来回送char,那么它工作得很好Edit1:还请注意,如果我返回到一个老的项目,执行完全相同的操作,但是使用.ony1.06.02和XC32 1.40就可以了。所以问题不是硬件相关的。
举报

陈小鸥

2019-7-31 12:45:35
在发送完所有数据后,必须禁用发送缓冲区是空的互联器。我的代码如下:if(SYS_INT_SourceStatusGet(INT_SOURCE_USART_1_TRANSMIT)){booln.ble=APP_USARTHardwareBufferWrite(USART_ID_1,INT_SOURCE_USART_1_TRANSMIT);SYS_INT_SourceStatusClear(INT_SOURCE)_USART_1_TRANSMIT;如果(int.ble)SYS_INT_Source.ble(INT_SOURCE_USART_1_TRANSMIT);}USARTHardwareBufferWrite(我的实现)在发送缓冲区(我的缓冲区,一个环形缓冲区)为空之后返回true。
举报

陈晨

2019-7-31 13:19:23
你可以得到一个程序,如比较(滑板车软件)比较“工作”版本到新的。你可以看到他们发生了什么变化。这个改变如何影响代码的操作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分