接上篇: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[512];
- u16 loralen=0;
- void USART6_IRQHandler(void)
- {
- #if SYSTEM_SUPPORT_OS //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
- OSIntEnter();
- #endif
- if(USART6->SR&(1<<5))//½ÓÊÕµ½Êý¾Ý
- {
- lorarcv[loralen]=USART6->DR;
- uart1_sendbyte(lorarcv[loralen]);
- loralen++;
- }
- if(loralen == 6)
- loralen = 0;
- #if SYSTEM_SUPPORT_OS //Èç¹ûSYSTEM_SUPPORT_OSΪÕ棬ÔòÐèÒªÖ§³ÖOS.
- OSIntExit();
- #endif
- }
复制代码 在main函数里面添加
u8 Tx_buffer[3]={0xc1,0xc1,0xc1};
u8 Tx_buffer1[3]={0xc3,0xc3,0xc3};
uart6_init(84,9600);
uart6_send(Tx_buffer,3);
delay_ms(5000);
uart6_send(Tx_buffer1,3);
delay_ms(5000);
可以发现串口助手里面会接收到默认的配置参数
这些配置官方手册都有,就不多说了,
|