GD32F303 里面要复用功能IO,通常需要把RCU_APB2EN里面的AFEN打开 对应的代码是rcu_periph_clock_enable(RCU_AF);然后在引脚初始化函数gpio_init()里使用GPIO_MODE_AF_xx
但GD32F450没有这个功能了,寄存器里也没有找到相应的位。是否不需要再关注复用时钟,直接使用复用连接就行了。
库里面利用连接的函数是:void gpio_af_set(uint32_t gpio_periph,uint32_t alt_func_num,uint32_t pin)。
如果有重映射引脚也不需要复用时钟吗?比如有定时器重新映射。
STM32也有类似的复用功能,如下所示:
使能AFIO功能的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
然后在引脚设置 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_xx;
特别是使用了AFIO的事件控制寄存器、AFIO的重映射功能以及外部中断(EXTI)控制寄存器是一定要开启AFIO的时钟的
|