【LoRa模块测评】主从控制LED
接上篇:【LoRa模块测评】实现模块互相通信折腾了2天,终于可以登录论坛了,下面开始把上午的成果分享一下。
主要是实现主从控制LED的翻转,接线还是和之前一样,主要实现过程是
主机发送控制指令,从机接收到指令后,实现LED的翻转
先实现主机部分:
<font size="3">u8 sendCMD[]={0x31,0x0d,0x0a};</font>上面是往从机发送指令,指令为0x31,在接收端第4位,
下面是从机部分:
从机串口接收部分
<font size="3">
u8 USART6_RX_BUF; //接收缓冲,最大USART_REC_LEN个字节.
u16 USART6_RX_STA=0;
void USART6_IRQHandler(void)
{
u8 res;
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntEnter();
#endif
if(USART6->SR&(1<<5))//接收到数据
{
res=USART6->DR;
uart1_sendbyte(res);
if((USART6_RX_STA&0x8000)==0)//接收未完成
{
if(USART6_RX_STA&0x4000)//接收到了0x0d
{
if(res!=0x0a)USART6_RX_STA=0;//接收错误,重新开始
else USART6_RX_STA|=0x8000; //接收完成了
}else //还没收到0X0D
{
if(res==0x0d)USART6_RX_STA|=0x4000;
else
{
USART6_RX_BUF=res;
USART6_RX_STA++;
if(USART6_RX_STA>(USART_REC_LEN-1))USART6_RX_STA=0;//接收数据错误,重新开始接收
}
}
}
}
#if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.
OSIntExit();
#endif
}</font>从机主控部分
<font size="3"> M0=0;
M1=0;
delay_ms(500);
while(1)
{
if(USART6_RX_STA&0x8000)
{
USART6_RX_STA=0;
if(USART6_RX_BUF==0x31)
GPIOF->ODR ^= PIN9|PIN10;
}
} </font>
下载到板卡后,从机的LED实现了定期翻转,见视频
由于录制的视频为mp4格式,不会上传,
补充内容 (2018-4-17 13:46):
主机部分少传的内容
Send_SX1276(1,sendCMD);
delay_ms(5000); 主机部分少传的内容
Send_SX1276(1,sendCMD);
delay_ms(5000); 楼主下次不要发布帖子在【活动专区】,这样就可以二次编辑了哦 好的,看别人都这样发,就也这样了
页:
[1]