近日合宙出品了一款:
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搭建教程
这里默认大家已经装好的keil MDK并完成注册激活,首先下载安装Air001芯片的SDK:Air001 SDK下载【OpenLuat Gitee】
打开Keil,点击“Project”–“New μVison Project”
在弹出的窗口中勾选“CMSIS”中的“CORE”和“Device”的“Stratup”,然后点击“OK”:
将SDK文件夹中的Libraries目录下的AIR001xx_HAL_Driver文件夹复制在工程目录下:
回到Keil软件,给工程添加添加HAL库外设源文件,按下图步骤操作,最后选择“\Libraries\AIR001xx_HAL_Driver\Src”中的
文件内容先空着。
创建一个“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
补充完如下图,标红的语句是由于头文件还未添加相关文件路径,后续添加:
新建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
#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();
}
接下来开始补充路径,首先点击“Options for Target”,也就是“魔棒”
然后选择“C/C++”–“Includes Paths”右边的扩展按钮:
补充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);
}
}
这里就可以进行尝试编译了,编译前要注意,C编译器选的是Compiler Version5,Keil MDK 5.37以及以后版本的默认都是6版本的了,需要自己手动安装Compiler Version5(https://developer.arm.com/downloads/view/ACOMP5 [需要注册\登录]:
该函数是在“air001xx_hal.h”中声明弱定义的,不知道是我操作问题还是遗漏了官方教程的步骤,我手动添加头文件后编译通过:
无错误和大警告就可以开始烧录了,由于我试用的是创新工坊的PWLINK,采用DAP的方式,所以要对烧录器进行修改,大家根据自己的烧录器进行选择:
另外我希望程序下载后直接运行,避免手动复位,所以进行如下设置:
接下来大家就可以愉快的开始玩这块板子了。