如何测试gpio口的默认状态_雅特力AT32单片机开发笔记GPIO

本文介绍了AT32系列MCU的GPIO测试与配置,包括GPIO的基本设置、功能复用以及注意事项,如JTAG转换为普通IO口的步骤,强调了PC14、PC15特殊性的处理方法。
摘要由CSDN通过智能技术生成

       由于最近工作较忙,项目进度也比较赶,所以未能及时更新公众号。以后我会及时更新一些开发技巧,以及一些优秀的工具及软件推送。

       我最近在一个项目上用的是AT32系列的MCU,为国内的芯片软件,为重庆雅特力研发制造。该MCU相对于STM32来说,价格相对来说较低,功能相对来说,可以满足一些程序量不是特别大,但是功能相对来说,较为丰富的产品上。

  官方网站有相对应的资料。官方网站为:http://www.arterytek.com/index.jsp。官网未提供对应的BSP代码,具体可从百度网盘上下载:

https://pan.baidu.com/s/1BQQz91QhJcyPF-mLMIsPJw

password: t3io。

        接下来,我将从基本外设谈起,分多个文章,来说一些在应用过程中的一些经验,想法等等。

        本章节先说GPIO,相对来说基本的GPIO来说,配置比较简单。但是32位机同51单片机不一样,IO有多种模式。

        每个MCU均有引脚图,AT32的也不例外。如下图所示:

1fe07ffa100093917de8f765f1814903.png

此为引脚图,另外下面还有对应的表格,由于比较庞大,因此只截取一部分。

30ab29a9143076f5ea1d798a81649d70.png

一、引脚控制逻辑代码

    同STM32类似,相对引脚有多种状态,具体引脚状态如下所示:

先宏定义引脚的信息,便于修改:

//充电中 #define   PIN_BAT_CHARGING        GPIO_Pins_13#define   PORT_BAT_CHARGING        GPIOC#define   RCC_BAT_CHARGING        RCC_APB2PERIPH_GPIOC

然后为引脚的配置 ,如下所示。结构体配置如下:

GPIO_InitType GPIO_InitStructure;    //充电中   IO  RCC_APB2PeriphClockCmd(RCC_BAT_CHARGING, ENABLE);  GPIO_StructInit(&GPIO_InitStructure);  GPIO_InitStructure.GPIO_Pins = PIN_BAT_CHARGING;           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入  GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_2MHz;   //IO电平翻转  GPIO_Init(PORT_BAT_CHARGING, &GPIO_InitStructure);

基本在初始化中调用该函数,即可实现IO的初始化。

二、IO功能复用

如果需要用到除普通IO之外的功能,或者重映射,则需要配置为其它功能。如下所示,JTAG中一些脚,配置成了普通IO口

GPIO_PinsRemapConfig(AFIO_MAP7_SWJTAG_0010,ENABLE);

三、IO其它注意事项

1、JTAG默认为使能的,如果配置成普通IO,需要先关闭JTAG功能。也可以只关JTAG,保留SWD功能,此种功能比较常用一些。

ad96cccb42847d55e50e415b4112714b.png

具体寄存器配置如下:

ab915f95c3080aef2cb89a494ef157b0.png

2、PC14 PC15引脚使用

PC14、PC15默认不是用作普通IO口的,使用时应注意。

1cf25dccdf2a710ddac704beabf68f59.png

具体代码如下,需要在初始化中调用。

RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_AFIO, ENABLE);  RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR, ENABLE);    //只使能JTAG,失能SWD   GPIO_PinsRemapConfig(AFIO_MAP7_SWJTAG_0010,ENABLE);  MCUDBG->IDCR &= ~((uint32_t)(1 <5));    //PC13 PC14 PC15用作普通IO口   PWR_BackupAccessCtrl(ENABLE);    /* 允许修改RTC和后备寄存器*/  RCC_ERTCCLKCmd(DISABLE);  RCC_LSEConfig(RCC_LSE_DISABLE);   /* 关闭外部低速时钟,PC14+PC15可以用作普通IO*/    PWR_BackupAccessCtrl(DISABLE);    /* 禁止修改RTC和后备寄存器*/  
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值