![]() |
你可以把这个等待当成应答,或者写入完成标志位,怎么叫都行,你理解就行了 1: 把写入一个完整数据(这包括写下地址,读写标志等等)和等待分开写,写两个函数 2: 声明一个僵局位,或者一个全局u8变量都行,看实际情况吧,我这行就用 F 来代替吧, 现在定义规则: F == 1 就是正在写入, F !=1 就是写入完成 3:这个是你的写入函数
|
不死鸟a 发表于 2025-4-27 14:23 论坛搜一下MODBUS的代码,我以前看过,应该就是中断的 |
wufa1986 发表于 2025-4-27 10:19 欧克,谢谢大佬 |
问一下大佬有代码参考一下嘛? |
不死鸟a 发表于 2025-4-26 20:46 可以参考下我发的帖子。串口的解决办法是使用DMA发送但是要注意需要判断DMA是否为忙状态也就是说不用DMA发送串口每发一个字节就得判断一下状态然后发下一个字节,使用DMA后每发一帧(一帧数据多长是个人定义的)需要判断一下DMA状态然后发下一帧。如果数据量不大波特率够高直接阻塞式发送也没事。 |
你说的问题,通常高级芯片都有DMA功能去避免这个问题 |
不死鸟a 发表于 2025-4-26 20:46 用中断方式嘛 |
还有在UART中,需要查询while(TI),while(RI),有什么办法可以避免这种阻塞代码吗,谢谢大佬们的解答 |