RISC-V技术论坛
直播中

张敏

8年用户 1664经验值
私信 关注
[问答]

gd32vf103r-start和gd32vf103c-start区别是什么?

gd32vf103r-start和gd32vf103c-start区别,我将c-start板的led代码下进r-start板里,led没有亮,这是什么原因。我是直接操作IO口,因此和led口的宏定义应该无关。

回帖(1)

lotusp

2025-11-12 17:42:08

GD32VF103R-START 和 GD32VF103C-START 的主要区别在于 芯片封装和引脚分配,导致 LED 连接的 GPIO 不同。以下是详细分析和 LED 不亮的原因:




核心区别
































特性 GD32VF103R-START GD32VF103C-START
主控芯片 GD32VF103RBT6 (LQFP64) GD32VF103CBT6 (LQFP48)
用户 LED 位置 PC13 PA7
封装 64 引脚更多,外设更丰富 48 引脚,更紧凑
板载资源 相同(调试器、按键等) 相同



LED 不亮的直接原因


您将 C-START 的代码(控制 PA7)烧录到 R-START 板时,LED 未亮是因为:




  1. 引脚不匹配  



    • C-START 的 LED 连接在 PA7,但 R-START 的 LED 在 PC13

    • 代码操作 PA7 时,R-START 的 PC13 无任何变化。




  2. 硬件差异  



    • 即使代码“直接操作IO”,也必须指向正确的物理引脚(PC13)。






解决方案


修改代码,将 LED 控制切换到 PC13


1. 修改初始化代码


// 替换原 PA7 初始化代码
rcu_periph_clock_enable(RCU_GPIOC);          // 启用 GPIOC 时钟
gpio_init(GPIOC, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13); // 配置 PC13 为推挽输出

2. 修改控制代码


// 点亮 LED (R-START 是低电平点亮)
gpio_bit_reset(GPIOC, GPIO_PIN_13);  // SET 或 RESET 取决于电路设计,通常查看板载 LED 电路

// 熄灭 LED
gpio_bit_set(GPIOC, GPIO_PIN_13);


注意:  



  • 确认 LED 电平逻辑:R-START 的 LED 通常是 低电平点亮(LED 阳极接 VCC,阴极接 PC13)。  

  • 如果仍不亮,尝试反转 gpio_bit_set/reset 操作。





验证步骤




  1. 检查硬件连接

    用万用表测量 PC13 引脚:



    • 输出低电平(0V)时 → LED 应亮。

    • 输出高电平(3.3V)时 → LED 应灭。




  2. 排查代码问题  



    • 确保启用了 GPIOC 时钟(RCU_GPIOC)。

    • 避免复用功能冲突(如 JTAG 占用 PC13,需禁用):
      gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE); // 禁用 JTAG,释放 PC13






总结



  • 根本原因:两版开发板的 LED 引脚不同(C-START: PA7, R-START: PC13)。  

  • 修复方式:将代码中所有 PA7 替换为 PC13,并验证电平逻辑。  

  • 预防措施:未来开发时使用宏定义区分板卡型号:
    #if defined(TARGET_GD32VF103C_START)
    #define LED_PORT GPIOA
    #define LED_PIN  GPIO_PIN_7
    #elif defined(TARGET_GD32VF103R_START)
    #define LED_PORT GPIOC
    #define LED_PIN  GPIO_PIN_13
    #endif


修改后重新烧录程序,R-START 的 LED 即可正常工作。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分