microPython 吃透 esp8266 NodeMCU v3 ch340串口收发


在这里插入图片描述》》》》》》》》》》
这块板子的淘宝链接
》》》》》》》》》》

串口4种情况说明

1. usb口是ch340转UART0,双向收发

2. UART0 位于引脚 1 (TX) 和 3 (RX) 上。UART0是双向的,默认情况下用于REPL.,但是这块板子的RX 好像有问题使用引脚无法接收数据,因此使用引脚的UART0仅是TX。

3. 引脚 15 (TX) 和 13 (RX)默认不能使用,可以通过将uart0 映射到这个串口上,实际只是引脚切换,还是uart0,但是由于引脚15 不能接入高电平,因此映射过来的UART0仅是RX

4.UART1在引脚2(TX)和8(RX)上,但是引脚8用于连接闪存芯片,因此UART1仅是TX。

1.使用串口uart0 时需要将 REPL(调试终端)进行分离

打开boot.py,去掉uart0 分离的注释,一定要在boot.py 进行分离。否则无效。
在这里插入图片描述

2. 使用usb口进行UART0串口通信

from machine import UART,Pin
import time

uart = UART(0, 115200, tx=Pin(1), rx=Pin(3))
uart.write(b"The quick brown fox jumps over the lazy dog\r\n")
ch = b""
while ch != b"q":
    if uart.any():
        ch = uart.read()
        uart.write(ch)
    time.sleep_ms(70)

3.uart0使用 GPIO 1 (TXD0) 和 GPIO3 (RXD0) 进行数据发送(可以进行接收测试,有些不同电路的板子可以双向通信)

TX 接D9

from machine import UART,Pin

uart = UART(0, 115200, tx=Pin(1), rx=Pin(3))
uart.write(b"The quick brown fox jumps over the lazy dog\r\n")

4. uart0 使用 GPIO13(RXD2)进行数据接收,不可以和uart1同时使用

注意接线TX 接 D7

from machine import UART,Pin
import time
power_led = Pin(2, Pin.OUT)
uart = UART(0, 115200, tx=Pin(15), rx=Pin(13))  # 映射
ch = b""
while ch != b"q":
    if uart.any():
        ch = uart.read()
    time.sleep_ms(70)
   
for index in range(4):
    power_led.value(0) #点亮LED
    time.sleep_ms((index+1)*70)
    power_led.value(1) #熄灭LED
    time.sleep_ms((index+1)*50)
    power_led.value(0) #点亮LED

5. uart1使用 GPIO2(TXD1)进行数据发送

注意接线RX 接 D4

from machine import UART
import time

uart = UART(1, 115200)
uart.write(b"The quick brown fox jumps over the lazy dog\r\n")
ch = b"1"
while ch != b"q":
    uart.write(ch)
    time.sleep_ms(70)

6.总结

针对这款板子的串口功能测试情况都在上面了,固件microPython 1.15。可能不同电路拓展的板子 略微有 收发功能上的差异,自行进行测试一下。

需要嵌入式软件定制开发进群

686070107

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
ConcurrentHashMap是Java中的一个线程安全的哈希表实现,它是基于散列的数据结构,可以支持并发的读和更新操作。它相比于普通的HashMap,在多线程环境下具有更好的性能和可靠性。 ConcurrentHashMap的主要特点如下: 1. 线程安全:ConcurrentHashMap使用了一种细粒度的锁机制来保证线程安全,允许多个线程同时进行读操作,而对写操作进行了分段加锁,不会阻塞其他读操作。 2. 分段锁:ConcurrentHashMap内部将数据分成多个段(Segment),每个段都维护了一个独立的哈希表。不同的线程可以同时访问不同的段,从而提高并发性能。 3. 原子性操作:ConcurrentHashMap提供了一些原子性的操作方法,如putIfAbsent()、remove()和replace()等。这些方法可以保证在操作期间没有其他线程对数据进行修改。 4. 无需加锁的读操作:ConcurrentHashMap允许多个线程同时进行并发读操作,因为读操作不会产生冲突,不需要加锁。 5. 高效性能:ConcurrentHashMap在大多数情况下具有比Hashtable和同步的HashMap更好的并发性能。 要充分理解和使用ConcurrentHashMap,你可以关注以下几点: - 理解其线程安全机制和锁的细粒度设计,避免出现死锁和竞态条件等问题。 - 确保在多线程环境下使用正确的并发控制方法,如使用原子性操作方法而不是先检查后执行的方式。 - 注意ConcurrentHashMap的迭代器可能不是强一致性的,如果需要强一致性的结果,可以考虑使用其他手段来处理。 - 根据具体的使用场景和需求,选择合适的并发度和初始容量。 希望以上信息对你有帮助!如果你还有其他问题,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图像处理大大大大大牛啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值