请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【LoRa模块测评】主从控制LED

[复制链接]
stary666 提问时间:2018-4-17 13:44 /
接上篇:【LoRa模块测评】实现模块互相通信




折腾了2天,终于可以登录论坛了,下面开始把上午的成果分享一下。
主要是实现主从控制LED的翻转,接线还是和之前一样,主要实现过程是
主机发送控制指令,从机接收到指令后,实现LED的翻转
先实现主机部分:

  1. <font size="3">u8 sendCMD[]={0x31,0x0d,0x0a};</font>
复制代码
上面是往从机发送指令,指令为0x31,在接收端第4位,
下面是从机部分:
从机串口接收部分
  1. <font size="3">
  2. u8 USART6_RX_BUF[USART_REC_LEN];     //接收缓冲,最大USART_REC_LEN个字节.
  3. u16 USART6_RX_STA=0;
  4. void USART6_IRQHandler(void)
  5. {
  6.     u8 res;        
  7. #if SYSTEM_SUPPORT_OS                 //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
  8.         OSIntEnter();   
  9. #endif
  10.         if(USART6->SR&(1<<5))//接收到数据
  11.         {         
  12.         res=USART6->DR;   
  13.                 uart1_sendbyte(res);
  14.         if((USART6_RX_STA&0x8000)==0)//接收未完成
  15.                 {
  16.                         if(USART6_RX_STA&0x4000)//接收到了0x0d
  17.                         {
  18.                                 if(res!=0x0a)USART6_RX_STA=0;//接收错误,重新开始
  19.                                 else USART6_RX_STA|=0x8000;        //接收完成了
  20.                         }else //还没收到0X0D
  21.                         {        
  22.                                 if(res==0x0d)USART6_RX_STA|=0x4000;
  23.                                 else
  24.                                 {
  25.                                         USART6_RX_BUF[USART6_RX_STA]=res;
  26.                                         USART6_RX_STA++;
  27.                                         if(USART6_RX_STA>(USART_REC_LEN-1))USART6_RX_STA=0;//接收数据错误,重新开始接收         
  28.                                 }                 
  29.                         }
  30.                 }         
  31.         }

  32. #if SYSTEM_SUPPORT_OS         //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
  33.         OSIntExit();                                                                                          
  34. #endif
  35. }</font>
复制代码
从机主控部分
  1. <font size="3"> M0=0;
  2.     M1=0;
  3.     delay_ms(500);
  4.           while(1)
  5.         {                 

  6.         if(USART6_RX_STA&0x8000)
  7.         {
  8.             USART6_RX_STA=0;
  9.             if(USART6_RX_BUF[3]==0x31)
  10.                 GPIOF->ODR ^= PIN9|PIN10;   
  11.         }
  12.         } </font>
复制代码


下载到板卡后,从机的LED实现了定期翻转,见视频


由于录制的视频为mp4格式,不会上传,

1532331013358.gif



补充内容 (2018-4-17 13:46):

主机部分少传的内容
Send_SX1276(1,sendCMD);
delay_ms(5000);
收藏 评论3 发布时间:2018-4-17 13:44

举报

3个回答
stary666 回答时间:2018-4-17 13:45:31
主机部分少传的内容
Send_SX1276(1,sendCMD);
delay_ms(5000);
zero99 回答时间:2018-4-17 14:58:57
楼主下次不要发布帖子在【活动专区】,这样就可以二次编辑了哦
stary666 回答时间:2018-4-18 08:34:24
好的,看别人都这样发,就也这样了

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版