近日合宙出品了一款:
TSSOP20封装、ARM®Cortex®-M0+内核,内置32K Flash+4K RAM、集成多路USART、IIC、SPI等通讯外设,5个16bit定时器以及1路12bit ADC和2路比较器的国产MCU
10块钱一个开发板+10个芯片,性价比还是很高的,加其“独特”的包装外观,笔者立即入手尝尝鲜。
一、 简介
本系列教程完全按照官方文档教程,只不过将操作步骤进行更具体的记录,以及遇到的问题与解决方法,如果有需要直接观看官方文档的,点击→:Air001芯片环境搭建教程
下述教程以基于KEIL-MDK的开发方式为主,如果需要以Arduino IDE进行开发,可参考官方文档:Air001芯片环境-Arduino搭建教程
一、 环境搭建
1、下载SDK
这里默认大家已经装好的keil MDK并完成注册激活,首先下载安装Air001芯片的SDK:Air001 SDK下载【OpenLuat Gitee】
解压下载的文件,然后进入PACK文件夹:
2、安装PACK
双击打开.pack文件安装:
点击NEXT完成安装
3、新建Keil工程
打开Keil,点击“Project”–“New μVison Project”
然后在选择合适的位置和名称后点击确定:
在弹出的窗口中选择Air001芯片,然后点击“OK”:
在弹出的窗口中勾选“CMSIS”中的“CORE”和“Device”的“Stratup”,然后点击“OK”:
4、配置Keil工程
(1)拷贝HAL库
将SDK文件夹中的Libraries目录下的AIR001xx_HAL_Driver文件夹复制在工程目录下:
(2)添加C文件引用
回到Keil软件,给工程添加添加HAL库外设源文件,按下图步骤操作,最后选择“\Libraries\AIR001xx_HAL_Driver\Src”中的
- “air001xx_hal.c”
- “air001xx_hal_rcc.c”
- “air001xx_hal_rcc_ex.c”
- “air001xx_hal_cortex.c”
- “air001xx_hal_gpio.c”
- “air001xx_hal_pwr.c”
- “air001xx_hal_pwr_ex.c”
- “air001xx_hal_flash.c”
完成添加:
(3)新建main.c
首先创建一个main.c文件
文件内容先空着。
(4)新建air001xx_hal_conf.h
创建一个“air001xx_hal_conf.h”文件来配置HAL库:
补充代码为:
#ifndef __AIR001xx_HAL_CONF_DEFAULT_H
#define __AIR001xx_HAL_CONF_DEFAULT_H
#ifdef __cplusplus
extern "C" {
#endif
#define HAL_MODULE_ENABLED
#define HAL_GPIO_MODULE_ENABLED
#define HAL_RCC_MODULE_ENABLED
#define HAL_FLASH_MODULE_ENABLED
#define HAL_PWR_MODULE_ENABLED
#define HAL_CORTEX_MODULE_ENABLED
#define HSE_VALUE 8000000U
#define HSE_STARTUP_TIMEOUT 100U
#define HSI_VALUE 24000000U
#define HSI_STARTUP_TIMEOUT 5000U
#define LSI_VALUE 32000U
#define LSE_VALUE 32768U /*!< Value of the External Low Speed oscillator in Hz */
#define LSE_STARTUP_TIMEOUT 5000U /*!< Time out for LSE start up, in ms */
#define TICK_INT_PRIORITY 0x00U /*!< tick interrupt priority */
#include "air001xx_hal_rcc.h"
#include "air001xx_hal_gpio.h"
#include "air001xx_hal_flash.h"
#include "air001xx_hal_pwr.h"
#include "air001xx_hal_cortex.h"
#define assert_param(expr) ((void)0U)
#endif
上述内容也是源于官方教程中的代码内容:
补充完如下图,标红的语句是由于头文件还未添加相关文件路径,后续添加:
(5)新建air001xx_it.h
新建air001xx_it.h头文件用于实现中断函数,和上面一样,新建文件“air001xx_it.h”:
代码内容:
#ifndef __AIR001XX_IT_H
#define __AIR001XX_IT_H
#ifdef __cplusplus
extern "C" {
#endif
void NMI_Handler(void);
void HardFault_Handler(void);
void SVC_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
#ifdef __cplusplus
}
#endif
#endif
(6)新建air001xx_it.c
同样的操作,新建“air001xx_it.c”文件:
#include "air001xx_it.h"
void NMI_Handler(void)
{
}
void HardFault_Handler(void)
{
while (1)
{
}
}
void SVC_Handler(void)
{
}
void PendSV_Handler(void)
{
}
void SysTick_Handler(void)
{
HAL_IncTick();
}
(7)添加头文件路径
接下来开始补充路径,首先点击“Options for Target”,也就是“魔棒”
然后选择“C/C++”–“Includes Paths”右边的扩展按钮:
添加下述路径,最后点击“OK”:
(8)添加宏定义
添加宏定义“AIR001_DEV”,然后点击“OK”
补充main.c的文件内容:
#include "air001xx_hal.h"
int main(void)
{
HAL_Init();
GPIO_InitTypeDef GPIO_LED = {
.Pin = GPIO_PIN_0,
.Mode = GPIO_MODE_OUTPUT_PP,
};
__HAL_RCC_GPIOB_CLK_ENABLE();
HAL_GPIO_Init(GPIOB, &GPIO_LED);
while (1)
{
HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
HAL_Delay(500);
}
}
(9)编译
这里就可以进行尝试编译了,编译前要注意,C编译器选的是Compiler Version5,Keil MDK 5.37以及以后版本的默认都是6版本的了,需要自己手动安装Compiler Version5(https://developer.arm.com/downloads/view/ACOMP5 [需要注册\登录]:
我这里编译时报了一个小问题:
该函数是在“air001xx_hal.h”中声明弱定义的,不知道是我操作问题还是遗漏了官方教程的步骤,我手动添加头文件后编译通过:
点击“Translate”,有一个结尾没添加空行的警告:
定位是底层文件,无法修改,这里忽略:
(10)Build
然后点击“Bulid”
5、烧录
(1)LINKER选择
无错误和大警告就可以开始烧录了,由于我试用的是创新工坊的PWLINK,采用DAP的方式,所以要对烧录器进行修改,大家根据自己的烧录器进行选择:
另外我希望程序下载后直接运行,避免手动复位,所以进行如下设置:
(2)连接烧录器和开发板
接线如下:
6、现象
烧录成功的话就可以看到指示灯开始闪烁啦:
接下来大家就可以愉快的开始玩这块板子了。