【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]