一、PA15配置为普通IO,PB3配置为TIMER1通道CH1的相关代码
1.PA15如何配置为普通IO
#define A_PIN GPIO_PIN_15
#define A_GPIO GPIOA
#define A_CLK RCU_GPIOA
void micromotor_alarm_gpio_config(void)
{
rcu_periph_clock_enable(A_GPIO_CLK);
rcu_periph_clock_enable(RCU_AF);
gpio_init(A_GPIO, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,A_PIN);
gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP,ENABLE);
gpio_bit_reset(A_GPIO,A_PIN);
}
2.PB3如何配置为定时器TIMER1通道CH1使用
#define B_PIN GPIO_PIN_3
#define B_GPIO GPIOB
#define B_GPIO_CLK RCU_GPIOB
void beep_alarm_gpio_config(void)
{
rcu_periph_clock_enable(B_GPIO_CLK);
rcu_periph_clock_enable(RCU_AF);
gpio_init(B_GPIO, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, B_PIN);
gpio_pin_remap_config(GPIO_TIMER1_FULL_REMAP,ENABLE);
timer_config();
}
二、GD32 JTAG备用功能重映射相关介绍
1.对应引脚
![](https://oss-club.rt-thread.org/uploads/20210724/6c09549277128c1d0568bca08c160290.jpg.webp)
2.对应的映射
![](https://oss-club.rt-thread.org/uploads/20210724/9106853832b540124856f9930d7d4143.jpg.webp)
3.PA15引脚在数据手册中的相关功能(GD32F103Cx)
![](//file.elecfans.com/web2/M00/33/00/pYYBAGIcYLOATtuOAABoIT59Zhw557.jpg)
4.PB3引脚在数据手册中的相关功能(GD32F103Cx)
![](https://oss-club.rt-thread.org/uploads/20210724/a40f76674de1329866d37eb708c1c6c0.jpg.webp)
三、原理:配置JTAG相关引脚,需要配置AFIO端口配置寄存器0(AFIO_PCF0)中的SWJ_CFG[2:0]位和TIMER1_REMAP[1:0]位
1.AFIO端口配置寄存器0(AFIO_PCF0)
![](https://oss-club.rt-thread.org/uploads/20210724/5eb57ee5f9c2836ecba3ba5bcf820f69.jpg.webp)
2.SWJ_CFG[2:0]位
![](https://oss-club.rt-thread.org/uploads/20210724/478c5115ebcbe86eb8543c03036d9fba.jpg.webp)
3.TIMER1_REMAP[1:0]位
![](https://oss-club.rt-thread.org/uploads/20210724/f7780e69e60816dda4bbf7450686ec80.jpg.webp)
四、重映射配置流程
1.配置对应引脚的时钟使能(RCU_GPIOx,A—F);
2.配置复用时钟引脚使能(RCU_AF);
3.根据不同功能配置对应引脚的模式(输入、输出、复用等);
4.根据不同功能配置不同功能映射(部分映射、完全映射)使能;
原作者:游走在01的海洋