由于最近工作较忙,项目进度也比较赶,所以未能及时更新公众号。以后我会及时更新一些开发技巧,以及一些优秀的工具及软件推送。 我最近在一个项目上用的是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的也不例外。如下图所示:
此为引脚图,另外下面还有对应的表格,由于比较庞大,因此只截取一部分。
一、引脚控制逻辑代码 同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功能,此种功能比较常用一些。
具体寄存器配置如下:
2、PC14 PC15引脚使用 PC14、PC15默认不是用作普通IO口的,使用时应注意。
具体代码如下,需要在初始化中调用。 RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOB | RCC_APB2PERIPH_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR, ENAB
|