今天在使用GD32F103的PB4的时候,不管怎么推挽输出,引脚电平都是0.9V,很有问题。
看了一下开发手册。才知道GD32的PB3、PB4默认是使用复用功能的,在手册中有提到:
使用我们PB3 PB4想像普通一脚一样使用,的映射成为普通引脚,不然它默认为JTAG引脚(下载调试用的)。
GD32映射函数:
rcu_periph_clock_enable(RCU_AF); //使能映射功能的时钟
gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE); //关闭JTAG-DP的使能,保留SW-DP使能
相同的参数还有:
gpio_pin_remap_config(GPIO_SWJ_NONJTRST_REMAP, ENABLE); //只关闭PB4引脚的映射功能
gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE); //关闭JTAG-DP的使能,保留SW-DP使能
gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP, ENABLE); //关闭JTAG-DP的使能和关闭SW-DP使能
映射函数:
void gpio_pin_remap_config(uint32_t remap, ControlStatus newvalue)
\brief 配置GPIO引脚映射
\param[in] gpio_remap: 选择要重新映射的引脚
\arg GPIO_SPI0_REMAP: SPI0 remapping
\arg GPIO_I2C0_REMAP: I2C0 remapping
\arg GPIO_USART0_REMAP: USART0 remapping
\arg GPIO_USART1_REMAP: USART1 remapping
\arg GPIO_USART2_PARTIAL_REMAP: USART2 partial remapping
\arg GPIO_USART2_FULL_REMAP: USART2 full remapping
\arg GPIO_TIMER0_PARTIAL_REMAP: TIMER0 partial remapping
\arg GPIO_TIMER0_FULL_REMAP: TIMER0 full remapping
\arg GPIO_TIMER1_PARTIAL_REMAP1: TIMER1 partial remapping
\arg GPIO_TIMER1_PARTIAL_REMAP2: TIMER1 partial remapping
\arg GPIO_TIMER1_FULL_REMAP: TIMER1 full remapping
\arg GPIO_TIMER2_PARTIAL_REMAP: TIMER2 partial remapping
\arg GPIO_TIMER2_FULL_REMAP: TIMER2 full remapping
\arg GPIO_TIMER3_REMAP: TIMER3 remapping
\arg GPIO_CAN_PARTIAL_REMAP: CAN partial remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_CAN_FULL_REMAP: CAN full remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_CAN0_PARTIAL_REMAP: CAN0 partial remapping(only for GD32F10X_CL devices)
\arg GPIO_CAN0_FULL_REMAP: CAN0 full remapping(only for GD32F10X_CL devices)
\arg GPIO_PD01_REMAP: PD01 remapping
\arg GPIO_TIMER4CH3_IREMAP: TIMER4 channel3 internal remapping(only for GD32F10X_CL devices and GD32F10X_HD devices)
\arg GPIO_ADC0_ETRGINS_REMAP: ADC0 external trigger inserted conversion remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_ADC0_ETRGREG_REMAP: ADC0 external trigger regular conversion remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_ADC1_ETRGINS_REMAP: ADC1 external trigger inserted conversion remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_ADC1_ETRGREG_REMAP: ADC1 external trigger regular conversion remapping(only for GD32F10X_MD, GD32F10X_HD devices and GD32F10X_XD devices)
\arg GPIO_ENET_REMAP: ENET remapping(only for GD32F10X_CL devices)
\arg GPIO_CAN1_REMAP: CAN1 remapping(only for GD32F10X_CL devices)
\arg GPIO_SWJ_NONJTRST_REMAP: full SWJ(JTAG-DP + SW-DP),but without NJTRST
\arg GPIO_SWJ_SWDPENABLE_REMAP: JTAG-DP disabled and SW-DP enabled
\arg GPIO_SWJ_DISABLE_REMAP: JTAG-DP disabled and SW-DP disabled
\arg GPIO_SPI2_REMAP: SPI2 remapping(only for GD32F10X_CL, GD32F10X_HD and GD32F10X_XD devices)
\arg GPIO_TIMER1ITI1_REMAP: TIMER1 internal trigger 1 remapping(only for GD32F10X_CL devices)
\arg GPIO_PTP_PPS_REMAP: ethernet PTP PPS remapping(only for GD32F10X_CL devices)
\arg GPIO_TIMER8_REMAP: TIMER8 remapping
\arg GPIO_TIMER9_REMAP: TIMER9 remapping
\arg GPIO_TIMER10_REMAP: TIMER10 remapping
\arg GPIO_TIMER12_REMAP: TIMER12 remapping
\arg GPIO_TIMER13_REMAP: TIMER13 remapping
\arg GPIO_EXMC_NADV_REMAP: EXMC_NADV connect/disconnect
\param[in] newvalue: ENABLE or DISABLE