CH32V003 PA1引脚作为普通IO口

我直接初始化PA1为输出,

GPIO_InitTypeDef GPIO_InitStructure={0};

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init( GPIOA, &GPIO_InitStructure );

拉高

GPIO_WriteBit(GPIOA, GPIO_Pin_1, Bit_SET);

实际测试,并未拉高。

一般这个引脚应该是接外部晶振的。

想请问一下这个需要什么操作吗?默认功能不就是IO口吗?

你好,注意如果用的是我们开发板,板上这两个电阻是没有焊接的

image.png


我也觉得奇怪,不接晶振更应该是拉高的。这个手册太不详细了


请问找到问题了么?想不通这逻辑是为什么,官方解释太简单了,都解决不了问题


你好,需注意使用PA1/2做普通IO时需要使用内部时钟,不然使能HSE时是关闭了PA1/2的IO功能的,还有需要注意说的如果是使用我们的开发板需要注意板上有两个0欧姆电阻没焊接。

image.pngimage.png

image.png



GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);


//#define SYSCLK_FREQ_8MHz_HSI? ? 8000000

//#define SYSCLK_FREQ_24MHZ_HSI? ?HSI_VALUE

#define SYSCLK_FREQ_48MHZ_HSI? ?48000000

//#define SYSCLK_FREQ_8MHz_HSE? ? 8000000

//#define SYSCLK_FREQ_24MHz_HSE? ?HSE_VALUE

//#define SYSCLK_FREQ_48MHz_HSE? ?48000000


PA1,PA2用作普通IO,这样设置还是不受控。??


您好,若使用我们开发板,注意R4、R5两个电阻要短接,要将晶振去掉。附件是测试例程,可以参考一下,测试是没有问题的。

icon_rar.gifCH32V003 晶振引脚作GPIO使用.zip

image.png


发现是自己的问题烧录完程序没有拔掉烧录器,连接烧录器PA1-2工作异常。拔掉烧录器PA1-2就工作正常了。


沁恒003的PA1 PA2有坑,003RM 59页写的复用功能复位是0,实测上电是1,也就是说默认开启复用,我还是看老外的帖子看到的看这个网页10楼

  https://www.eevblog.com/forum/projects/datasheet-errors-387247/msg4991266/#msg4991266


您好,关于003的PA1、PA2引脚,开启重映射功能可作为晶振引脚使用,若你的测试例程使用的外部时钟源,那么测试肯定是开启复用功能的,芯片出厂应该默认都是未开启复用功能的,可使用内部时钟源配置系统主频进行测试。后续若有问题,可邮箱(lzs@wch.cn)沟通。


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