RT-Thread OS 学习过程中问题总结

1.  关于串口打印buffer不够的问题

Warning: There is no enough buffer for saving data,please increase the RT_SERIAL_RB_BUFSZ option.   的解决办法:

  增加 RT_SERIAL_RB_BUFSZ只是治标不治本,出现该问题的原因是串口来不及读取数据,导致buffer溢出,实验用的是小熊派STM32L431RCT6 

解决办法有两个:

(1)串口打印线程优先级比其它线程优先级低,导致读取不及时,造成buffer溢出,可以把其它线程优先级降低。

(2)把串口频发打印的语句注释掉,不使用串口打印,也就没有溢出问题了。

2. RT-Thread OS 连接Onenet 云端初始化问题

int main(void)
{
//    int count = 5;
    MX_GPIO_Init();  //默认点亮LED
    MX_USART1_UART_Init();
//    MX_LPUART1_UART_Init();
//    MX_SPI2_Init();
    rt_pin_write(45, PIN_HIGH);
    onemet_sem = rt_sem_create("onenet_init", 0, RT_IPC_FLAG_PRIO);
    if(onemet_sem == RT_NULL){
        LOG_E("rt_sem_create onenet_init failed...\n");
    }
    lcd_clear(WHITE);
    lcd_set_color(WHITE,BLUE);
    rt_thread_mdelay(1000);
    E53_IA1_sht30_demo();

    onenet_mqtt_init();     //初始化onenet云平台

    rt_sem_take(onemet_sem, RT_WAITING_FOREVER);
    rt_sem_delete(onemet_sem);
    LOG_I("onenet_mqtt_init successed...\n");
    rt_pin_write(45, PIN_LOW);
    onenet_upload_cycle();

先调用 onenet_mqtt_init();     //初始化onenet云平台 ,等MQTT server connect success完成后才能调用 onenet_upload_cycle()上传数据 ,否则会导致数据上传数据失败。

因此在MQTT server connect success后释放信号量,在main函数中获取信号量,得到后才启动上传数据线程。

你可能感兴趣的:(RT-Thread,OS学习,学习)