本帖最后由 loony85 于 2021-8-24 16:27 编辑
最近要实现一个PWM控制泵转速的功能,之前在硬件设计的时候预留了一个I/O口,一直没有使用。于是根据例程写了一段程序,烧脑的事情来了:
例程使用的P34口,
GpioInitStruct.enDrv = GpioDrvH;
GpioInitStruct.enDir = GpioDirOut;
Gpio_Init(GpioPort3, GpioPin4, &GpioInitStruct);
Gpio_SetAfMode(GpioPort3, GpioPin4, GpioAf1);
Pca_M0Init(&PcaInitStruct);
例程的P34配置为GpioAf1,对应PCA 的模块0,可以正常实现PWM输出。
我的板子用的P32作为PWM输出端口,根据数据手册第21页中GPIO的功能分配表,P32对应PCA_CH2,根据在表中的排序,与P34的一致,于是也按GpioAf1设置GPIO口,但是一致没成功。
GpioInitStruct.enDrv = GpioDrvH;
GpioInitStruct.enDir = GpioDirOut;
Gpio_Init(GpioPort3, GpioPin2, &GpioInitStruct);
//Gpio_SetAfMode(GpioPort3, GpioPin2, GpioAf1); //输出3.3V
Gpio_SetAfMode(GpioPort3, GpioPin2, GpioAf2); //pwm输出
Pca_M2Init(&PcaInitStruct);
这个问题困扰了我几个小时,最后我试着用GpioAf2设置GPIO口,PWM一下就出来!!!
不知道是手册的问题,还是我没找到具体说明的位置。
另外还有个问题,也是这个GPIO复用功能配置的问题,P15在复用为UART的时候,如果按照手册应该配置为GpioAf5,但实际应配置为GpioAf6才能使用。
|