高级会员
- 积分
- 564
- 金钱
- 564
- 注册时间
- 2019-8-31
- 在线时间
- 172 小时
|
1金钱
本帖最后由 侯先生爱生活 于 2020-5-30 10:37 编辑
求助:使用正点原子的LORA模块,透明传输,只能接受第一次传过来的数据。
两个STM32F103RC核心板,两个LORA模块,一个甲醛传感器,一个屏幕。
发射端为 核心板+LORA+甲醛传感器,把 甲醛传感器的数据用字符的形式传到 另一个核心板(接收端),接收端使用一个1.3寸的OLED屏幕显示LORA接收到的字符。
使用透明传输
现在最大的问题是:刚开机第一次传输时,屏幕能正常显示LORA接收到的字符串,之后再传输的数据,就不能显示了。 貌似也能接收几次,不过不能显示,传输个四五次之后,接收端就会卡死。
发射端应该是正常的,可以一直发送数据。
char lora_tx_data[100];//lora传输数组
unsigned char lora_rx_data[100];//lora接收数组
unsigned char Uart2_Buff[1024]; //串口2缓冲数组 甲醛模块
unsigned char Uart2_Count=0; //串口2累加变量
u8 state=0,s0=0,right=0,count=0;
float result;
float table=0.70;
u8 pm25Value;
u8 str[] = " CH2O_H ";
u8 showBuffer[9] = {0};
//char showBuffer[9] = {0};
uint8_t key1_flag=0,key2_flag=0,key3_flag=0,memory_flag=0;
uint8_t sec1=0,sec2=0;
uint32_t Tim_ms=0;
int main(void)
{
int i;
SystemInit();//系统时钟初始化 移植程序
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
LED_Init(); //LED端口初始化
OLED_Init(); //初始化OLED
// uart_init(115200);
USART1_Config();//默认串口
USART3_Config(115200); //LORA使用串口 USART3 配置 *******
LORA_Init();//lora模块初始化
uart2_init(); //甲醛传感器使用串口2 默认为9600 写在函数里
OLED_Clear();
OLED_ShowString(0,0,"STM32");
OLED_ShowString(94,0,"LORA");
// 显示一个“CH20: mg/m3”
OLED_ShowString(0,2,"CH2O");
OLED_ShowString(35,2,":");
while(1)
{
LED=!LED;
////////发送LORA数据
//if(right==1)//如果right==1
// {
// right=0;
// pm25Value = Uart2_Buff[4]*256 + Uart2_Buff[5];
// result = pm25Value / 66.64 * 0.08;
//
// //把数据变成字符显示
//// sprintf((char*)showBuffer,"CH2O:%1.4fmg/m3",result);
// sprintf((char*)showBuffer,"%1.4fmg/m3",result);//把数据变成字符显示
// OLED_ShowString(20,4,showBuffer); //显示甲醛浓度值
//
// // LORA数据发送
// sprintf((char*)lora_tx_data,"%1.4fmg/m3",result);//把数据变成字符串
// lora_transmit(lora_tx_data);
//
//// lora_transmit(showBuffer);
//
// }
//////接收LORA数据
lora_receive();//接收LORA数据
OLED_ShowString(20,4,lora_rx_data); //显示甲醛浓度值
OLED_ShowNum(0,5,i,4,16);
i++;
// }
|
|