关于CH32系列MCU GPIO使用
1、关于CH32V103 PD0/PD1引脚使用
PD0、PD1引脚为外部HSE晶振引脚,作为普通GPIO使用的时候注意:需要关闭外部晶振,开启复用时钟,使用HSI配置系统主频,否则无法正常运行。
2、关于CH32V003 PA1/PA2引脚时用
PA1、PA2引脚可以作为外部晶振引脚使用,注意若要作为普通GPIO使用时,需要使用内部晶振配置系统主频,否则会导致IO输出不正常。此外注意不需要开启复用时钟。
3、关于CH32X035 CC引脚(PC14、PC15)作为普通IO引脚配置上拉注意事项
CC引脚作为普通IO配置上拉时,若按照正常上拉配置,上拉电压大概2.2V左右。若想上拉电压达到正常供电电压3.3V,则需要进行如下配置,如下图:
注意要开启复用时钟,且需要对AFIO控制寄存器的位8置1,如下图:
4、关于CH32 GPIO合封引脚使用注意事项
CH32系列某些小封装芯片存在合封引脚,如下图。以下图8脚为例,为PD4、PD5、PD1的合封引脚,其中PD1引脚还作为SWIO下载引脚。若要使用PD4引脚作为普通IO输出高低电平,注意在进行程序配置时需要注意:
(1)PD4引脚按照GPIO输出配置;
(2)合封引脚PD5和PD1要配置为浮空输入模式;
(3)PD1同时作为SWIO下载引脚,要注意关闭SDI下载功能,要注意开启复用时钟,即AFIO时钟。
5、关于GPIO引脚复用功能使用注意事项
使用GPIO引脚作为某外设复用功能重映射时,以下图为例
注意,引脚只能按照上表格对应列引脚使用,比如复用时,可按照PA15、PB3、PA2、PA3使用,或按照PA0、PA1、PB10、PB11使用,不能PA15、PA1、PA2、PB11这种交叉使用。
6、关于GPIO引脚作为EXTI引脚使用
GPIO引脚作为EXTI使用时,若使用PA引脚可以不开AFIO时钟,若是使用PB、PC等的引脚,要开AFIO时钟。
7、关于CH32V003复位引脚PD7作为GPIO使用配置说明
具有两种配置方式:
1、直接通过操作用户字进行配置,如下图,注意要FLASH解锁;
2、直接通过WCH-LinkUtility工具配置,如下图,下载时选择对应的选项即可
8、关于CH32系列MCU在输出模式下获取其输出状态
当IO配置成输出模式时,通过对输入数据寄存器的读访问可得到I/O状态。在STM32参考手册以及CH32应用手册中都有对其的介绍,如下图:
在开漏模式下,对输入数据寄存器的读访问可获取到当前IO状态(输出1受外部上拉电阻影响);
在推挽模式下,对输出数据寄存器的读访问可获取到最后一次写的值。
注意,推挽输出模式下,读取输出数据寄存器只能读到该IO口最后一次设定的输出电平状态,而不一定是实际的IO口状态。比如说,写寄存器使IO输出低,但外部电路使其强拉到高,这时读输出数据寄存器只能读到低,因为最后一次写操作就是低。
注意,读最后一次设定的输出电平状态,在推挽输出模式时,除了GPIOx_ODR,读GPIOx_IDR也是一样的(假定外部电路不影响其输出电平)。(读GPIOx_ODR寄存器用的是GPIO_ReadOutputDataBit函数,读GPIOx_IDR寄存器用的是GPIO_ReadInputDataBit函数)
9、关于GPIO部分重映射以及完全重映射的理解
关于重映射功能中ETR后面的数字编号,可参考下图理解,表示不同的引脚以及是部分重映射还是完全重映射。
以TIM2为例,可以看到默认映射对应的引脚为PA0、PA1、PA2、PA3;部分重映射的引脚为PA15、PB3、PA2、PA3,只改变了部分引脚,所以叫部分重映射;设置为完全重映射时为PA15,PB3,PB10和PB11,全部的引脚都改变了,所以叫完全重映射。
关于对应引脚的使用,若只使用CH1,其他通道引脚不受影响;在使用时需按照竖列引脚进行配对。
10、关于GPIO引脚上电抖动问题
因为单片机上电初始化阶段(未完成初始化时)IO是浮空输入状态,若要避免抖动,需要在外部加上拉电阻给它一个确定的电平。