《一种全新的串口接收方案》

[复制链接]
2734|9
 楼主| bhsdlmj 发表于 2009-12-14 11:31 | 显示全部楼层 |阅读模式
本帖最后由 bhsdlmj 于 2009-12-15 08:04 编辑

采用仿照MODBUS方法!
编译器用的是keil


把接收到的1帧(帧的长度固定)放到结构体Frame里面(结构体里面的成员都是8字节的


  1. 全局变量 bit   Flag_reveivedatamanymany = FALSE;

  2. void main (void)
  3. {
  4.       if (Flag_reveivedatamanymany) {
  5.                    //do something
  6.       }
  7. }

  8. void UART_IRQHandler(void) interrupt PI_Order_UART
  9. {
  10.       static uint8_t *ptr = 结构体的首字节地址;
  11.      static bit pointerValid_OK = FALSE;//指针有效的含义就是指针指向了结构体的内部

  12.     if (RI) {
  13.          RI = FALSE;
  14.          if (定时器停止计数) {
  15.                 ptr = 结构体的首字节地址;
  16.          }
  17.          
  18.          pointerValid_OK =  (结构体首字节地址 <= ptr <= 结构体末尾字节地址)
  19.          if (pointerValid_OK) {
  20.                  pointerValid_OK = FALSE;
  21.                  *ptr = SBUF;   
  22.                  ptr++;
  23.          }

  24.          装载计数器初值;
  25.          启动定时器;
  26.     }


  27.      else if (TI) {
  28.               TI = FALSE;
  29.      }

  30. }




  31. void TIM_IRQHandler(void) interrupt PI_Order_TIM
  32. {
  33.         if (TF) {
  34.                 TF = 0;

  35.                  停止定时器;

  36.                  Flag_reveivedatamanymany = TRUE;

  37.          }
  38. }

大家帮忙看看我写的有没有什么漏洞或需要改进的地方

评分

参与人数 1威望 +1 收起 理由
xlsbz + 1

查看全部评分

 楼主| bhsdlmj 发表于 2009-12-14 13:36 | 显示全部楼层
嗨  只有人看,没有人顶啊
xlsbz 发表于 2009-12-14 14:24 | 显示全部楼层
很好,我再研究研究.......
xlsbz 发表于 2009-12-14 21:55 | 显示全部楼层
楼主的方法似乎不行吧:dizzy:
宇容创行 发表于 2009-12-15 09:11 | 显示全部楼层
pointerValid_OK 这个是怎么判断的?

没看出算法上有什么好
hotpower 发表于 2009-12-15 13:25 | 显示全部楼层
没看出来新在什么地方~~~

评分

参与人数 2威望 +2 收起 理由
bhsdlmj + 1
xlsbz + 1

查看全部评分

新好男孩 发表于 2009-12-15 14:32 | 显示全部楼层
就是一个超时而已
 楼主| bhsdlmj 发表于 2009-12-15 15:54 | 显示全部楼层
6# hotpower

大叔,我这个程序有啥漏洞么?
xlsbz 发表于 2009-12-15 22:07 | 显示全部楼层
你这种方法很不咋地啊!!! 需要改进!

:lol
yixiao2000 发表于 2009-12-16 15:05 | 显示全部楼层
本帖最后由 yixiao2000 于 2009-12-16 15:06 编辑

方法是可以的,也是常用,不算全新的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

351

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部