江南才子 发表于 2021-7-7 12:58:22

433_PIC18F4580串口接收例程分析

         全部学习汇总: https://github.com/GreyZhang/PIC18F
         今天来看一下串口的接收功能,本来还想顺带练习一下emacs,不过第二次遇到了emacs文件占用与MPLAB冲突导致没法编译的诡异现象。暂且放弃emacs练习的想法了,毕竟VS Code也还不错。
         上来,还是得先处理一些烂代码,先保证软件能够正常运行。为此,做如下定制:

         管脚寄存器映射处理,这次偷懒了,因为我觉得VS Code下面的vim插件用着不是很顺手,没有便捷的处理方式。

         这些修改,带着原来的一些不良设计其实已经可以测试了。

         我发送了1234567890,回出来了12345678。因为,逻辑中有一个8字节buffer的判断。

         这个串口的接收用到了中断,还增加了一个定时器做超时判断。超时时间,暂且不去计算了。从这个代码风格以及测试结果看,interrupt集中了所有的中断handler,通过标志位来进行区分哪个中断发生了。

         主函数里面的一些信息跟测试其实是有冲突的,我直接去掉了。这样,还能够看到多次接收的时候出现的LED灯变化。在实际的测试中,我也看到了这样的变化。

         发送函数,我还是做了修改,回到了我最初修改出来的一个阻塞式发送。代码精简,干掉了那个看上去原来工程师想标记一下强调使用了中断的那个发送。测试下来,功能也OK。

  
文档来源:51CTO技术博客https://blog.51cto.com/greyzhang/2993365
页: [1]
查看完整版本: 433_PIC18F4580串口接收例程分析