1.合宙Air32F103调试GPIO

一、简介

合宙Air32F103开发板板载Air32F103CBT6,兼容STM32F103C8T6,价格太香了,首发9.9包邮。自带DAPLink固件,可以直接当DAPLink使用。

1.合宙Air32F103调试GPIO_第1张图片

官方详细介绍(含资料):Air32F103 Wiki,开发板开发板PinOUT图:

1.合宙Air32F103调试GPIO_第2张图片

 将在本栏目简单介绍使用基于此开发板的调试,以调试阿里云为导向,完成各部分的调试,预计要更新的内容包括:GPIO、USART、LCD、KEY、DHT11、阿里云。

所有的程序将重新移植官方例程,并且重写工程,参考正点原子的风格建立工程目录。

二、调试例程

使用官方例程,可以快速验证开发环境、下载方式等问题。

2.1下载例程

在Air32F103Gitee上面下载使用官方SDK例程。

1.合宙Air32F103调试GPIO_第3张图片

AIR_Jlink_Keil文件夹里包含有下载的软件包,Libraries文件夹包含有库文件,ModuleDemo文件夹包含各个模块的例程。

2.2安装软件包

双击AIR_Jlink_Keil\Keil.AIR32F103_DFP.1.0.4.pack即可安装软件包。

2.3打开GPIO例程

打开GPIO例程工程:ModuleDemo\GPIO\GPIO_IOOut\USER\GPIO.uvprojx

1.合宙Air32F103调试GPIO_第4张图片

2.4连接下载器

由于此开发板自带DAPLink固件,所以用2块开发板进行调试。一个当开发板,一个当DAPLink。

连线如下:

1.合宙Air32F103调试GPIO_第5张图片

2.5下载程序

下载前,先将Debug中的下载器型号选则为CMSIS-DAP Debugger。

1.合宙Air32F103调试GPIO_第6张图片

由于Air32F103开发板内置了DAPLink固件,第一次下载时需要按住复位键后再点击下载。官方Wiki详细说明:

1.合宙Air32F103调试GPIO_第7张图片

如果下载顺利,按下复位键后,板上3个LED开始流水灯闪烁,说明下载成功了,至此完成了开发环境和程序下载接线的调试。

(关于下载程序的详细说明,在官方Wiki里面有更详细的介绍)

三、封装工程

由于官方的工程示例不太适合扩展,使用正点原子的风格新建工程。

3.1封装led底层文件

新建一个led.c和led.h。封装如下函数:

led.c

#include "led.h"

void LED_GPIO_Init(void)

{

       GPIO_InitTypeDef GPIO_InitStructure;

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_10 | GPIO_Pin_11;

       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz

       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //输出模式

       GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB.2,10,11        

}                                                         

void LED_Set(u8 led)

{

       if(led&0x01)LEDR_ON;else LEDR_OFF;

       if(led&0x02)LEDG_ON;else LEDG_OFF;

       if(led&0x04)LEDB_ON;else LEDB_OFF;

}

leh.h

#ifndef __LED_H__

#define __LED_H__                        

#include "air32f10x.h"

#include "sys.h"

#define LEDR PBout(11)

#define LEDG PBout(10)

#define LEDB PBout(2)

#define LEDR_ON (LEDR=1)

#define LEDG_ON (LEDG=1)

#define LEDB_ON (LEDB=1)

#define LEDR_OFF (LEDR=0)

#define LEDG_OFF (LEDG=0)

#define LEDB_OFF (LEDB=0)

#define LEDR_TOGGLE (LEDR=~LEDR)

#define LEDG_TOGGLE (LEDG=~LEDG)

#define LEDB_TOGGLE (LEDB=~LEDB)

void LED_GPIO_Init(void);

void LED_Set(u8 led);

#endif

3.2使用

在main函数中只需要先进行LED_GPIO的初始化后,再进行LED控制即可。

main.c

#include

#include

#include

#include "delay.h"

#include "led.h"

int main(void)

{

       RCC_ClocksTypeDef clocks;

       delay_init();                       //延时初始化

       RCC_GetClocksFreq(&clocks); //获取系统时钟频率

      

       LED_GPIO_Init();

      

       while (1)

       {

              LEDR_TOGGLE;

              delay_ms(200);//延时200ms

             

              LEDG_TOGGLE;

              delay_ms(200);//延时200ms

             

              LEDB_TOGGLE;

              delay_ms(200);//延时200ms

       }

}

3.3工程结构

1.合宙Air32F103调试GPIO_第8张图片

 工程结构与正点原子的工程类似,但不完全一样,方便自己使用分类即可。

到此,编译,下载工程,和官方例程一样,看到LED闪烁即可。

你可能感兴趣的:(合宙Air32F103,合宙,Air32F103,开发环境)