0

我想使用 10ms 和 1ms 的定时器通过单个 UART 发送和接收数据。如果设置了 1ms 定时器标志,则 10ms 传输应该停止,其他应该开始,因为 1ms 传输是紧急的。完成后,第一个应该恢复。dspic33ep微控制器系列怎么做?

注意:Uart 可用性受应用程序限制。

4

1 回答 1

0

我建议以 1kHz(即每毫秒)触发单个定时器中断。中断将设置一对全局信号量标志,指示 (a) 需要传输,以及 (b) 应该发生什么类型的传输。信号量应声明为 volatile。

然后,您的主控制循环可以检查/轮询信号量以确定是否该进行传输,以及所需的传输类型。注意只检查每个信号量一次,因为它们的值可以在两次测试之间改变。您的控制循环还需要重置时间发送数据信号量。

这种方法会有一些延迟(设置信号量的中断和循环测试信号量之间的时间)。

还有传输速度的问题。您将不得不使用相当高的波特率才能以 1kHz 的重复率传输任何可观的数据量。例如,在 9600 波特率下,仅传输一个字符大约需要 1ms。

于 2021-07-06T00:01:18.347 回答