pkokoc
pkokoc

注册于 3 years ago

回答
17
文章
1
关注者
2

1、PC浏览器https可以成功下载,将下载后的文件通过ymodem可正常升级
2、MCU通过http OTA下载是没有问题的
3、添加NTP,模拟RTC后,MCU https 问题依旧。
image.png

经实际测试,感觉上述答复并不正确。楼主提到“线程2的优先级比线程1的优先级高,却晚执行”,该现象的关键点并非flag 标志设置问题。由于MCU是单核,因此所谓的多线程,在同一时刻还是单线程的。楼主提到的现象的本质是因为线程1先startup,因此线程1先开始执行,当线程1执行到 rt_thread_mdelay(10);语句时,线程1让出CPU资源,然后线程2才开始执行,因为线程2的优先级高,因此后续是执行线程2的代码。
如下两个测试可验证:
1、将RT_IPC_FLAG_FIFO改为RT_IPC_FLAG_PRIO,其它代码不变,可发现任然是线程1先执行。
2、如果将线程1函数中的rt_thread_mdelay(10)语句去掉,即线程1的while()是一个死循环,此时线程1不会让出CPU资源,线程2根本不会开始执行。

经过测试发现ARTPI SDK1.1.0 中默认sfud_write写入时是按扇区(4096字节)对齐写入的。按扇区对齐可正常写入。

类似的小问题还有: https://club.rt-thread.org/ask/article/54.html
怎么说呢,感觉也不算BUG,就是使用起来很不爽。

看下ESP8266的固件版本,太低会出现该问题。

升级固件版本(1.7.0以上)可解决

rt-thread studio 1.1.3中添加不了mqtt client,手动下载后还是不行啊!?

仔细研究了一下,这个问题是UART3的中断响应函数的问题。具体在我写的这篇总结文章中:
F030系列芯片UART3~UART6使用问题总结

经过查找,这个问题需要在uart_config.h文件中手工增加如下代码段。

#if defined(BSP_USING_UART6)
#ifndef UART6_CONFIG
#define UART6_CONFIG                                                \
    {                                                               \
        .name = "uart6",                                            \
        .Instance = USART6,                                         \
        .irq_type = USART3_6_IRQn,                                    \
    }
#endif /* UART6_CONFIG */
#endif /* BSP_USING_UART6 */

其中.irq_type = 的值需要查看stm32f030xc.h文件的定义,比如此处 USART3_6_IRQn 的定义就与USART1_IRQn、USART2_IRQn 略有区别
define.png

uart6-1.png

发布
问题