如何在Rust项目中配置树莓派Pico的非标准UART引脚?
在Rust rp2040-project-template中修改UART引脚配置
核心思路
Rust生态下的RP2040开发依赖rp-hal系列库,无需直接使用C的pico.h,直接在代码中重新指定UART引脚即可完成配置。
具体操作步骤
定位UART初始化代码
模板中的日志输出(比如基于defmt或panic-probe的日志)默认绑定在UART0的引脚1(TX)和引脚2(RX)上。你需要在src/main.rs或独立的uart.rs模块中找到初始化UART的代码段。重新指定UART引脚
假设你打算将UART0的TX改到引脚16、RX改到引脚17,参考以下代码修改:use rp_pico::hal::{gpio::Pins, uart::UartPeripheral}; fn setup_uart(pins: Pins) -> UartPeripheral<uart::Uart0> { // 绑定新的UART引脚,释放GPIO1和GPIO2 let uart_pins = ( pins.gpio16.into_mode::<rp_pico::hal::gpio::FunctionUart>(), // 新TX引脚 pins.gpio17.into_mode::<rp_pico::hal::gpio::FunctionUart>(), // 新RX引脚 ); // 初始化UART0,波特率保持与Picoprobe一致的115200 let mut uart = rp_pico::hal::uart::UartPeripheral::new( pac.UART0, uart_pins, rp_pico::hal::clock::Clock::system_clock.freq(), ) .unwrap(); // 开启UART读写功能 uart.enable_rx(); uart.enable_tx(); uart }更新日志输出绑定
如果模板使用UART输出日志,修改完UART初始化后,确保日志的输出载体替换为新初始化的UART实例。比如调用日志宏时:defmt::info!("日志已切换到新UART引脚!");验证配置有效性
- 重新编译并烧录固件到Pico开发板
- 将Picoprobe的TX/RX引脚交叉连接到你指定的新引脚(Picoprobe TX接Pico RX,Picoprobe RX接Pico TX)
- 打开终端工具确认日志正常输出,同时GPIO1和GPIO2已可用于其他功能开发
注意事项
- 选择的引脚必须支持UART功能(参考RP2040数据手册的引脚功能表,挑选带有UART0/1 TX/RX标识的引脚)
- 若使用UART1而非UART0,只需将代码中的
UART0替换为UART1,并对应选择支持UART1的引脚 - 确保UART波特率与Picoprobe配置一致(默认115200)
内容的提问来源于stack exchange,提问作者eletvon
相关产品推荐
相关产品推荐

