为什么CH32V003的PA2设置为上拉输入后在管脚上量不到高电平?

如题

您好,在我们EVT PUB文件夹下有我们开发板的原理图,你可以看一下,若你使用的是我们开发板,我们开发板上的R4、R5并没有接,需要你自己焊接一下,此外,若使用PA1、PA2,则不能使用外部晶振,需要使用内部晶振,若你自己只是学习测试,可以在开发板上使用其他GPIO引脚进行测试。下面链接为EVT下载链接:

https://www.wch.cn/downloads/CH32V003EVT_ZIP.html 

image.png


自己画的板子,没有外部晶振,管脚直连插针


void GPIO_Toggle_INIT(void)

{

? ? GPIO_InitTypeDef GPIO_InitStructure = {0};


? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOC, &GPIO_InitStructure);


? ? RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

? ? GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;

? ? GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;

? ? GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

? ? GPIO_Init(GPIOA, &GPIO_InitStructure);

}


int main(void)

{

? ? u8 i = 0;


? ? NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

? ? Delay_Init();

? ? USART_Printf_Init(115200);

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


? ? printf("GPIO Toggle TEST\r\n");

? ? GPIO_Toggle_INIT();


? ? while(1)

? ? {

? ? ? ? Delay_Ms(250);

? ? ? ? GPIO_WriteBit(GPIOC, GPIO_Pin_7, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));

? ? }

}



您好,注意程序中关于系统时钟配置部分要配置使用内部晶振,可以直接使用相关宏定义,如下图,附件为参考例程,可以参考一下。

icon_rar.gifCH32V003 PA2.zip

image.png


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