OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3559|回复: 0

雅特力AT32_默认非GPIO的Pin如何设置为GPIO(FAQ0016)

[复制链接]

34

主题

37

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
211
金钱
211
注册时间
2019-12-27
在线时间
26 小时
发表于 2021-3-13 10:51:32 | 显示全部楼层 |阅读模式
Questions如何将以下默认非GPIOPin设置为GPIO
捕获.PNG
Answer将以上IO设置为GPIO,需要开启对应GPIO时钟、开启复用时钟、将IO配置为输入/输出/复用功能、设置重映射、关闭入侵检测、关闭外部时钟等相应的操作。
1.        将OSC_IN、OSC_OUT设置为GPIO输出,需要设置如下:
//开启GPIOD时钟、开启复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOD| RCC_APB2PERIPH_AFIO, ENABLE);
//关闭外部高速时钟
RCC_HSEConfig(RCC_HSE_DISABLE);
//设置PD0、PD1为推挽输出
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_0| GPIO_Pins_1;
GPIO_InitStructure.GPIO_MaxSpeed =GPIO_MaxSpeed_2MHz;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_OUT_PP;
GPIO_Init(GPIOD, &GPIO_InitStructure);
//设置重映射 JTAG-DP Disabled and SW-DP Enabled
GPIO_PinsRemapConfig(GPIO_Remap_PTD01,ENABLE);
注:如果要使用PD0PD1,则时钟初始化时不用使能HSEPLL时钟源不能选择为HSE
2.        将SWJ设置为GPIO,例如将JTDI、JTDO、NJTRST设置为GPIO输出,需要设置如下:
//开启GPIOA、GPIOB时钟、开启复用时钟
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA | RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_AFIO,ENABLE);
//设置PA15、PB3、PB4为推挽输出
         GPIO_InitStructure.GPIO_Pins = GPIO_Pins_15;
       GPIO_InitStructure.GPIO_MaxSpeed= GPIO_MaxSpeed_2MHz;
       GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT_PP;
       GPIO_Init(GPIOA,&GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pins= GPIO_Pins_3 | GPIO_Pins_4;
       GPIO_Init(GPIOB,&GPIO_InitStructure);
//设置重映射 JTAG-DPDisabled and SW-DP Enabled
       GPIO_PinsRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

关于SWJ重映射说明:
/*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */
#define GPIO_Remap_SWJ_NoJNTRST    ((uint32_t)0x01000000)  
/*!< JTAG-DP Disabled and SW-DP Enabled */
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x02000000)  
/*!< Full SWJ Disabled (JTAG-DP + SW-DP) */
#define GPIO_Remap_SWJ_AllDisable  ((uint32_t)0x04000000)  
3.        将TAMPER-RTC、OSC32_IN、OSC32_OUT设置为GPIO输出,需要设置如下:
//开启GPIOC时钟、开启备份接口时钟、开启电源接口时钟
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOC,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_BKP,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR,ENABLE);
//关闭入侵检测和外部低速时钟
PWR_BackupAccessCtrl(ENABLE);
BKP_TamperPinCmd(DISABLE);       //关闭入侵检测
RCC_LSEConfig(RCC_LSE_DISABLE);   //关闭外部低速时钟
PWR_BackupAccessCtrl(DISABLE);
//设置PC13、PC14、PC15为推挽输出
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_13| GPIO_Pins_14 | GPIO_Pins_15;
GPIO_InitStructure.GPIO_MaxSpeed =GPIO_MaxSpeed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT_PP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
注:如果要使用PC14PC15,则时钟初始化时不用使能LSE
类型:MCU 应用
适用型号:全系列(AT32F403, AT32F403A, AT32F413,AT32F415, AT32F407
主功能:GPIO

FAQ0016_ How_to_set_the_default_non-GPIO_Pin_as_GPIO_CH_V1.0.1.pdf

239.15 KB, 下载次数: 0

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 15:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表