ch32v203 PC13 用做输入

PC13,PC14和PC15引脚通过电源开关进行供电,而这个电源开关只能够吸收有限的电流(3mA)。因
此这三个引脚作为输出引脚时有以下限制:在同一时间只有一个引脚能作为输出,作为输出脚时只能工
作在2MHz模式下,最大驱动负载为30pF,并且不能作为电流源(如驱动LED)。


手册中关于这3个脚的说明,只说了关于做为输出脚的注意事项,我现在是用做输入脚,无论设置成上拉,下拉,或是浮空,读出的引脚状态总是0,引脚电压是2.0V左右。请问:PC13能用做通用的输入脚吗?谢谢!

您好,PC13当作普通IO使用需要关闭入侵检测功能,具体操作可参考附件。

icon_rar.gifV203_PC13.zip



您好,PC13可用作输入,PC13作为普通IO使用时,需要关闭入侵检测功能,附件为PC13作为输入配置例程,可以参考一下

icon_rar.gifCH32V203 C8T6 PC13、14、15.zip



/*

 *@Note

 串口打印调试例程:

 USART1_Tx(PA9)。

 本例程演示使用 USART1(PA9) 作打印调试口输出。


*/


#include "debug.h"


/* Global typedef */


/* Global define */


/* Global Variable */



void GPIO_Toggle_INIT( void )

{

    GPIO_InitTypeDef  GPIO_InitStructure = {0};


    RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOC, ENABLE );


    PWR_BackupAccessCmd( ENABLE );/* 允许修改RTC和后备寄存器*/

    RCC_LSEConfig( RCC_LSE_OFF ); /* 关闭外部低速时钟,PC14+PC15可以用作普通IO*/

    BKP_TamperPinCmd(DISABLE);    /* 关闭入侵检测功能,PC13可以用作普通IO*/


    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13| GPIO_Pin_14 | GPIO_Pin_15;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

    GPIO_Init( GPIOC, &GPIO_InitStructure );

    PWR_BackupAccessCmd(DISABLE);/* 禁止修改RTC和后备寄存器*/

}


/*********************************************************************

 * @fn      main

 *

 * @brief   Main program.

 *

 * @return  none

 */

int main(void)

{

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    Delay_Init();

    GPIO_Toggle_INIT();

    USART_Printf_Init(115200);

    printf("SystemClk:%d\r\n", SystemCoreClock);




    while(1)

    {

        if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_13)==1)

        {

            printf("This is printf example\r\n");

        }

    }

}



您好!用了上面的程序,效果依旧。请问:您在板子上测试过吗?或是我的板子有毛病?


您好,不好意思,我之前发你的例程是用作输出的,现在附件例程是作为输入配置的,可以参考一下,测试时没问题的。但是你按照另外一个回复参考工程配置也是没有问题的,你可以针对你的MCU具体型号检查一下ld文件、启动文件的配置是否正确,如下图。

icon_rar.gifCH32V203 C8T6-PC13-14-15.zip

image.png

image.png


只有登录才能回复,可以选择微信账号登录