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函数中获取信号量,得到后才启动上传数据线程。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值