You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Raspberry Pi Pico汇编代码编译失败:未定义link_gpio_get函数求助

我为Raspberry Pi Pico编写了一段汇编代码,实现LED和两个按键的功能:一个按键点亮LED,另一个按键熄灭LED。作为树莓派新手,我在虚拟机中使用cmake和make编译,但无法生成UF2文件,报错原因是sdlink.c文件中未定义link_gpio_get函数,导致cmake因未定义引用错误而失败。

我的汇编代码

.EQU    LED_PIN1, 0
.EQU    BUT_PIN1, 1
.EQU    BUT_PIN2, 2
.EQU    GPIO_IN, 0
.EQU    GPIO_OUT, 1
.thumb_func
.global main
main:
    MOV R0, #LED_PIN1
    BL  gpio_init
    MOV R0, #LED_PIN1
    MOV R1, #GPIO_OUT
    BL  link_gpio_set_dir @ Initialize PIN1
    MOV R0, #BUT_PIN1
    BL  gpio_init
    MOV R0, #BUT_PIN1
    MOV R1, #GPIO_IN
    BL  link_gpio_set_dir
    MOV R0, #BUT_PIN2
    BL  gpio_init
    MOV R0, #BUT_PIN2
    MOV R1, #GPIO_IN
    BL  link_gpio_set_dir
wait_on:  
    MOV R0, #BUT_PIN1 @ Wait for turn on button
    BL link_gpio_get
    CMP R0, #1
    BEQ turn_on
    B   wait_on
turn_on:
    MOV R0, #LED_PIN1
    MOV R1, #1
    BL  link_gpio_put @ Turn on led
    B   wait_off
turn_off:
    MOV R0, #LED_PIN1
    MOV R1, #0
    BL  link_gpio_put @ Turn off led
    B   wait_on
wait_off:
    MOV R0, #BUT_PIN2 @ Wait for off
    BL link_gpio_get
    CMP R0, #1
    BEQ turn_off
    B wait_off
/* C wrapper functions for the RP2040 SDK
 * Incline functions gpio_set_dir and gpio_put.
 */
 
#include "hardware/gpio.h"

void link_gpio_set_dir(int pin, int dir)
{
    gpio_set_dir(pin, dir);
}

void link_gpio_put(int pin, int value)
{
        gpio_put(pin, value);
}

解决方法

你需要在sdlink.c中补充实现link_gpio_get函数,该函数封装RP2040 SDK提供的gpio_get函数,用于读取GPIO引脚的电平状态。修改后的sdlink.c代码如下:

/* C wrapper functions for the RP2040 SDK
 * Incline functions gpio_set_dir and gpio_put.
 */
 
#include "hardware/gpio.h"

void link_gpio_set_dir(int pin, int dir)
{
    gpio_set_dir(pin, dir);
}

void link_gpio_put(int pin, int value)
{
        gpio_put(pin, value);
}

// 新增link_gpio_get函数,读取指定引脚的电平
int link_gpio_get(int pin)
{
    return gpio_get(pin);
}

补充完成后,重新运行cmake和make即可正常编译生成UF2文件。

内容的提问来源于stack exchange,提问作者Ali Shakouri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 23:15:30