许久没有发了,分享下最近的感悟。如有错误的地方往指正,互相学习,哈哈。废话不多说,入正题,今天就Modbus说一下。
对于modbus相信大家并不陌生,我不知道大家怎么写的,我也希望大家有好 写法提供参考,那是不胜感激的。在此感谢这段时间大家的帮助,如孙工,韩工,等等。本次讲解就是在孙工的基础上建立的,硬件是用的STM8S系列,
这里直说串口接收中断与定时器中断,
以前是这么写的,用到了一个定时器,一个UART串口,咱先不说stm8 如果用在STC芯片上,那可是很昂贵的,本身就三个定时器,一个UART用,还需要一个定时器辅助,就剩下可怜的一个定时器了。这只是个通讯啊大哥,其他的工作科怎么做。反复的看,反复的改,是不是可以这样啊,work();这个函数拿出来,再写一个函数,在这个函数里面包含着它,建立属于它的标志位,于是出来下边这个版本,
我们分析下这样的好处,首先用了标志位后可以与其他函数共享定时器,节约了资源,接下里是省去了 开关定时器的繁琐步骤。效率自然就上去了。接着往下看,在485通讯时是否遇到过返回数组不全的问题,(接收的前段数据时正确的),我遇到过,在STM8 上边,为什么呢,愿意在于DE端的控制上,还未发送完成就关闭的发送使能,程序如下未改正前。
|