关于GPIO口对应外设的优先级关系(CH32F/V103)
1.对于客户使用多个外设,导致部分GPIO口不受控的问题,例如:CH32F203的定时器3开启后会导致所有TIM3的IO都受制于TIM3,因为TIM3对GPIO的控制优先级大于TIM1。
由上面的表可知,当TIM3选中的引脚与TIM1选中的引脚重合时(默认映射或者响应映射),TIM1的GPIO会失效控制,
TIM3默认映射,TIM1部分映射1,重合的部分是 TIM1_BKIN.TIM1_CH1N.TIM1_CH2N.TIM1_CH3N.
2.解决:当不需要TIM3的CH通道输出的时候,只需要将对应的OC配置一下,宏选择
对应寄存器位为
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Inactive;//PB0
TIM_OCInitStructure.TIM_Pulse = 0;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
TIM_OC3Init( TIM3, &TIM_OCInitStructure ); // 使用CH3通道
此时PB0与TIM3解绑,此时再次使用TIN1_CH2N_1即可输出PWM。
3.以下为对应关系表。
同理,使用对应外设时,高优先级的外设没有用到的IO,例如SPI的NSS引脚,不要使能硬件NSS即可,对应串口的话,硬件流控没有使用的话,不要配置相应寄存器即可。