新闻  |   论坛  |   博客  |   在线研讨会
避坑CH32V003_PA1_PA2_PD7配置成普通输入输出引脚
stb988 | 2024-12-13 18:35:10    阅读:8   发布文章

ch32v003的pd7为外接复位引脚,如果需要使用外接GPIO复位,需要在用户字中配置,而PA1与PA2默认是外接晶振使用,如果需要配置成普通IO口使用,就必须先把system_ch32v00x.c文件中的宏定义改成内部晶振,如下:

//#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

如图

QQ图片20241206144857.png还有在GPIO初始化时需要关闭外部晶振

GPIO_InitTypeDef GPIO_InitStructure = {0};
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);//这里需要添加进RCC_APB2Periph_AFIO
 
GPIO_PinRemapConfig(GPIO_Remap_PA1_2, DISABLE); //关闭外部晶振
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
 
GPIO_Init(GPIOD, &GPIO_InitStructure);
 
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2;
 
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
 
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 
GPIO_Init(GPIOA, &GPIO_InitStructure);

初始化如图:

QQ图片20241206145105.png这样方能使用PA1,PA2做为普通GPIO口。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客