合宙Air001开发板实战指南—从零构建Keil-MDK工程与GPIO控制

张开发
2026/5/30 4:40:14 15 分钟阅读
合宙Air001开发板实战指南—从零构建Keil-MDK工程与GPIO控制
1. 合宙Air001开发板初体验第一次拿到合宙Air001开发板时我着实被它的性价比惊艳到了。这款采用TSSOP20封装的开发板搭载ARM Cortex-M0内核内置32KB Flash和4KB RAM集成多路USART、IIC、SPI等通信外设还配备了5个16位定时器、1路12位ADC和2路比较器。最让人惊喜的是10块钱就能买到开发板加10个芯片的组合这在嵌入式开发领域简直是白菜价。作为一款国产MCUAir001的开发环境支持非常友好。官方提供了Keil-MDK和Arduino两种开发方式对于习惯使用专业嵌入式开发工具的用户来说Keil-MDK无疑是最佳选择。我实测下来虽然官方文档已经比较详细但在实际搭建过程中还是会遇到不少细节问题特别是对于刚接触嵌入式开发的新手来说一个完整的实战指南非常必要。2. 开发环境准备2.1 安装Keil MDK基础环境在开始Air001开发前首先需要准备好Keil MDK开发环境。我推荐使用Keil MDK 5.37版本这个版本对Air001的支持最为稳定。安装过程需要注意以下几点从ARM官网下载Keil MDK安装包时记得同时下载Compiler Version5因为Keil MDK 5.37及以后版本默认使用Compiler Version6而Air001的SDK目前对Version5支持更好。安装完成后务必完成注册激活否则会有32KB代码大小限制。激活过程需要用到License可以在Keil官网申请评估版或购买正式版。安装路径建议保持默认不要包含中文或特殊字符避免后续编译时出现路径问题。2.2 获取Air001 SDKAir001的SDK可以从OpenLuat的Gitee仓库下载。下载完成后你会得到一个压缩包解压后主要包含以下重要目录PACK包含Air001的设备支持包用于Keil识别这款芯片LibrariesHAL库源代码提供了对芯片外设的抽象封装Projects官方示例工程Utilities一些实用工具和脚本我建议将整个SDK解压到一个固定的工作目录比如D:\Air001_SDK这样后续引用路径会更清晰。3. 创建第一个Keil工程3.1 安装设备支持包打开解压后的SDK目录进入PACK文件夹你会看到一个.pack文件。双击这个文件启动Keil的Pack Installer按照向导完成安装。安装完成后Keil就能识别Air001这款芯片了。提示如果安装过程中遇到权限问题可以尝试以管理员身份运行Keil后再安装。3.2 新建工程框架打开Keil MDK点击Project→New μVision Project选择一个合适的目录保存工程。我习惯在SDK目录下新建一个Projects文件夹来存放自己的工程。在弹出的设备选择窗口中搜索并选择Air001芯片。这里要注意选择正确的Flash和RAM大小配置Air001应该是32KB Flash和4KB RAM的配置。接下来会弹出运行时环境配置窗口这里需要勾选CMSIS→COREDevice→Startup这两个选项会为工程添加必要的启动文件和CMSIS核心支持。3.3 工程目录结构规划一个良好的工程目录结构能让后续开发更有序。我通常采用如下结构MyProject/ ├── Drivers/ │ ├── AIR001xx_HAL_Driver/ # 从SDK复制过来的HAL库 ├── Inc/ # 头文件 ├── Src/ # 源文件 ├── MDK-ARM/ # Keil自动生成的目录 └── MyProject.uvprojx # Keil工程文件将SDK中Libraries目录下的AIR001xx_HAL_Driver文件夹复制到工程的Drivers目录下。这样做的目的是保持工程文件的独立性避免直接修改SDK中的原始文件。4. 配置工程与HAL库4.1 添加HAL库源文件回到Keil中我们需要将HAL库的源文件添加到工程。右键点击Target 1选择Add Existing Files to Group...然后导航到Drivers/AIR001xx_HAL_Driver/Src目录添加以下核心文件air001xx_hal.cair001xx_hal_rcc.cair001xx_hal_rcc_ex.cair001xx_hal_cortex.cair001xx_hal_gpio.cair001xx_hal_pwr.cair001xx_hal_pwr_ex.cair001xx_hal_flash.c这些文件提供了芯片的基础外设驱动支持。随着后续功能的扩展你可能需要添加更多外设驱动文件。4.2 创建必要的配置文件在Inc目录下新建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 #define LSE_STARTUP_TIMEOUT 5000U #define TICK_INT_PRIORITY 0x00U #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) #ifdef __cplusplus } #endif #endif这个文件定义了要启用的HAL模块和芯片的一些时钟参数。对于初学者来说直接使用这个配置即可。4.3 添加中断处理文件在嵌入式系统中中断处理是必不可少的。我们需要创建两个文件air001xx_it.h放在Inc目录#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 #endifair001xx_it.c放在Src目录#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(); }这些函数是Cortex-M0内核的基本中断处理程序其中SysTick_Handler尤为重要它为HAL库提供了时间基准。4.4 配置头文件路径和宏定义点击Keil工具栏上的Options for Target按钮魔术棒图标在C/C选项卡中在Include Paths中添加以下路径../Inc../Drivers/AIR001xx_HAL_Driver/Inc../Drivers/CMSIS/Device/ST/AIR001xx/Include../Drivers/CMSIS/Include在Define框中添加宏定义AIR001_DEV这些配置确保编译器能找到所有必要的头文件并正确定义芯片型号。5. 编写第一个点灯程序5.1 创建main.c文件在Src目录下创建main.c文件这是程序的入口。我们将实现一个简单的LED闪烁程序#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); } }这段代码做了以下几件事初始化HAL库配置GPIOB的Pin0为推挽输出模式启用GPIOB的时钟在循环中每隔500ms切换一次LED状态5.2 解决常见编译问题第一次编译时可能会遇到以下问题编译器版本不匹配确保在Options for Target→Target选项卡中选择了Use default compiler version 5。未定义HAL_IncTick这个问题通常是因为忘记包含air001xx_hal.h头文件或者头文件路径配置不正确。警告no newline at end of file这是Keil的一个严格检查可以在文件末尾添加一个空行解决。5.3 烧录配置编译成功后就可以准备烧录程序了。点击Options for Target→Debug选项卡选择你的调试器类型如ST-Link、J-Link或DAP等在Utilities选项卡中勾选Reset and Run这样程序下载后会自动运行根据你的调试器接口SWD或JTAG正确连接开发板Air001开发板通常使用SWD接口连接方式如下SWDIO → PB13SWCLK → PB14GND → GNDVCC → 3.3V5.4 验证结果烧录成功后你应该能看到开发板上的LED开始以1Hz的频率闪烁。如果没有看到预期效果可以检查以下几点LED连接的GPIO引脚是否正确有些开发板LED可能连接在其他引脚GPIO初始化代码是否正确配置了对应的引脚开发板的供电是否正常调试器连接是否可靠如果一切正常恭喜你完成了第一个Air001程序这个简单的点灯实验验证了你的开发环境配置正确为后续更复杂的开发打下了基础。

更多文章