stary666 发表于 2018-4-17 08:16:15

【LoRa模块测评】实现休眠模式读取配置

接上篇:LoRa模块初看




本贴主要实现在休眠模式下读取模块的配置从手册的6.5休眠模式的简介可以知道默认的TTL配置

按照手册提供的管脚分配开始实现接线

pin1是M0,pin2是M1,pin3是RX,pin4是TX,对应的管脚见上图,对应的USART6。
本次使用的板卡为正点原子的探索者F407开发板2块,
由于本人喜欢寄存器配置,所以直接拷贝了寄存器例程13----实验13 TFTLCD显示实验
在usart.c中实现usart6的相关实现如下

void uart6_init(u32 pclk2,u32 bound)
{         
      float temp;
      u16 mantissa;
      u16 fraction;         
      temp=(float)(pclk2*1000000)/(bound*16);//µÃµ½USARTDIV@OVER8=0
      mantissa=temp;                                 //µÃµ½ÕûÊý²¿·Ö
      fraction=(temp-mantissa)*16; //µÃµ½Ð¡Êý²¿·Ö@OVER8=0
    mantissa<<=4;
      mantissa+=fraction;
      RCC->AHB1ENR|=1<<6;         //ʹÄÜPORTA¿ÚʱÖÓ
      RCC->APB2ENR|=1<<5;          //ʹÄÜ´®¿Ú6ʱÖÓ
      GPIO_Set(GPIOG,PIN9|PIN14,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);//PA9,PA10,¸´Óù¦ÄÜ,ÉÏÀ­Êä³ö
         GPIO_AF_Set(GPIOG,9,8);      //PA9,AF7
      GPIO_AF_Set(GPIOG,14,8);//PA10,AF7            
      //²¨ÌØÂÊÉèÖÃ
         USART6->BRR=mantissa;         //²¨ÌØÂÊÉèÖà        
      USART6->CR1&=~(1<<15);         //ÉèÖÃOVER8=0
      USART6->CR1|=1<<3;          //´®¿Ú·¢ËÍʹÄÜ

      //ʹÄܽÓÊÕÖжÏ
      USART6->CR1|=1<<2;          //´®¿Ú½ÓÊÕʹÄÜ
      USART6->CR1|=1<<5;            //½ÓÊÕ»º³åÇø·Ç¿ÕÖжÏʹÄÜ                  
      MY_NVIC_Init(3,3,USART6_IRQn,2);//×é2£¬×îµÍÓÅÏȼ¶

      USART6->CR1|=1<<13;          //´®¿ÚʹÄÜ
}

void uart6_sendbyte(u8 ch)
{
    while((USART6->SR&0X40)==0);//Ñ­»··¢ËÍ,Ö±µ½·¢ËÍÍê±Ï   
      USART6->DR = (u8) ch;   
}   

void uart6_send(u8* ptr,u16 size)
{
    while(size--)
    {
      while((USART6->SR&0X40)==0);
      USART6->DR = *ptr++;
    }
}

u8 lorarcv;
u16 loralen=0;
void USART6_IRQHandler(void)
{
#if SYSTEM_SUPPORT_OS               //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
      OSIntEnter();   
#endif
      if(USART6->SR&(1<<5))//½ÓÊÕµ½Êý¾Ý
      {         
                lorarcv=USART6->DR;
                uart1_sendbyte(lorarcv);
      loralen++;      
      }
    if(loralen == 6)
      loralen = 0;
#if SYSTEM_SUPPORT_OS         //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
      OSIntExit();                                                                                          
#endif
}
在main函数里面添加
u8 Tx_buffer={0xc1,0xc1,0xc1};
u8 Tx_buffer1={0xc3,0xc3,0xc3};


uart6_init(84,9600);               

uart6_send(Tx_buffer,3);
delay_ms(5000);
uart6_send(Tx_buffer1,3);
delay_ms(5000);

可以发现串口助手里面会接收到默认的配置参数


这些配置官方手册都有,就不多说了,



页: [1]
查看完整版本: 【LoRa模块测评】实现休眠模式读取配置