• gd32关于IO引脚配置的一些问题


    一、gd32f103的PA15问题
    1、
    在这里插入图片描述

     #define GPIO_SWJ_NONJTRST_REMAP          ((uint32_t)0x00300100U)   /*!< full SWJ(JTAG-DP + SW-DP),but without NJTRST */
    #define GPIO_SWJ_SWDPENABLE_REMAP        ((uint32_t)0x00300200U)   /*!< JTAG-DP disabled and SW-DP enabled */
    #define GPIO_SWJ_DISABLE_REMAP           ((uint32_t)0x00300400U)   /*!< JTAG-DP disabled and SW-DP disabled */  
     gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE); // 该情况下PA15,PB3,PB4可作普通GPIO使用;
    
    • 1
    • 2
    • 3
    • 4

    【ref】https://blog.csdn.net/qq_34152804/article/details/118584370
    2、原本PA15已经用于红外通信功能
    在这里插入图片描述

    void pwm_timer1_config(void)
    {
        timer_ic_parameter_struct timer_icinitpara;
        timer_oc_parameter_struct timer_ocintpara;
        timer_parameter_struct timer_initpara;
    
        // clock
        rcu_periph_clock_enable(RCU_GPIOA);
        rcu_periph_clock_enable(RCU_GPIOB);
        rcu_periph_clock_enable(RCU_AF);
        rcu_periph_clock_enable(RCU_TIMER1);
    
        gpio_pin_remap_config(GPIO_TIMER1_FULL_REMAP, ENABLE);
    
        /*Configure PA15 PB3 PB10 PB11(TIMER1 CH0 CH1 CH2 CH3) as alternate function*/
        gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_15); // 红外通信
          
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    【attention】1和2代码同时存在情况下,PA15依然可作为普通IO口输入检测(即便是又经过gpio_pin_remap_config(GPIO_TIMER1_FULL_REMAP, ENABLE)的二次重映射),已验证有效;
    但是即便生效,也不能同时用于光耦检测和红外通信两个功能上,很明显会相互干扰;

    Q&A :这种重映射会有多个功能options时,它们之前是如何distinguish的?还是说这几个选项功能会同时存在生效?

    二、PC6问题
    在这里插入图片描述

    void cap_timer7_init(void)
    {
        timer_parameter_struct timer_initpara;
        timer_ic_parameter_struct timer_icinitpara;
        // timer_oc_parameter_struct timer_ocintpara;
        //clock
        rcu_periph_clock_enable(RCU_TIMER7);
        rcu_periph_clock_enable(RCU_AF); 
        rcu_periph_clock_enable(RCU_GPIOC);
    
        // GPIO
        gpio_init(GPIOC, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6); // 红外通信
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    【attention】PC6原被复用为TIMER7_CH0功能,在多个复用选项时如何区分?虽然已经把PC6复用为TIMER7_CH0,但是依然可作为普通io输入检测,已验证;

  • 相关阅读:
    基于SSM框架流浪猫救援网站的设计与实现毕业设计源码201502
    ROS | 命名空间
    【PAT甲级 - C++题解】1120 Friend Numbers
    背景音乐和蓝牙进来的音乐,如何共享一个功放和喇叭?
    Spark数据倾斜
    从设计模式理解Spring原理之注册器模式
    javaweb--Tomcat
    ubuntu24.04LVM扩容问题
    luffy项目前端创建、配置、解决跨域问题、后端数据库迁移
    【luogu CF1534F2】Falling Sand (Hard Version)(性质)(dfs)(线段树 / 单调队列 / 贪心)
  • 原文地址:https://blog.csdn.net/SUR0608/article/details/134491321