Microchip
直播中

李岩

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

为什么UART中断只工作一次?

HII有一个PIC32MX795F512L。我正在做一个简单的UART中断代码,我在(1)循环中在UART上打印一些值,我有一个Rx的ISR。在上面的代码中,我配置了用于中断的UART并在UART上打印一些数据。上面的代码是用于UART的ISR。它把接收到的数据存储在Rx中,直到它收到r。我称之为outputCommand[Rx],它包含基于接收的数据的if条件。据我所知,上述代码的功能应该是:虽然循环运行应该在UART上每隔1s打印一次,当rx数据是1时,中断触发。应该打印出来。但是每隔1秒就会显示“Whilelooprun”,但当rx数据是1时,就会显示“Inter.Fired”,之后什么都不会发生。while循环和输出命令停止工作。怎么了?我也有一个问题,当我们在(1)的时候,ISR发生了什么?

回帖(6)

张娜

2019-9-3 09:30:05
嗯,不要在ISR内部执行“发送”。它将花费大量的时间并打破它在ISR中设置一个标志并在主代码中处理它。
举报

唐红菊

2019-9-3 09:36:54
考虑RX中断标志的功能和操作。你也有一些严重的设计问题。ISRs不应该有这样的循环,也不要打印到串口或其他耗时的代码。
举报

郭武莱

2019-9-3 09:54:17
达里奥吉试着设置一面旗帜,但没有奏效。像下面:然后在(1)这就是你所说的。
举报

郭武莱

2019-9-3 10:01:31
当我使用RX数据时(1)
举报

更多回帖

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