只读分享解决方案文档原理方案设计📅 2026-10-14🔖 Rev 1.0⏳ 还有3日到期
🔧解决方案&应用市场分析 -> 原理方案设计 -> 主芯片方案调试开发 -> 雅特力AT32_开发指南

雅特力AT32_开发指南

同系列 · 原理方案设计
扫码打开本页
微信扫码

雅特力 AT32 开发指南

编制日期 2026-10-14 | 版本号 Rev 1.0

从 Work Bench 装不起来、AT-Link 连不上、STM32 代码搬不过来,一路到量产烧录与 USB 免晶振设计 —— 一份把「第一次上手会踩的坑」全部前置的工程手册

90%+
与 STM32 代码兼容度
Pin-to-Pin 替换,少量改驱动即可
288
F437 最高主频 MHz
F415 主流 150MHz,F403A 240MHz
2~4 线
调试口只需 SWD
SWDIO=PA13 / SWCLK=PA14
crystal-less
USB Device 免外置晶振
内部 HICK+ACC 精度 ±0.25%
3 种
烧录模式 ICP/ISP/IAP
AT-Link / J-Link / 串口 DFU
224 KB
F403A 可扩展 SRAM
经 USD 选项字节 EOPB0 配置

结论:AT32 是国产 Cortex-M4 里对 STM32 兼容性最好、替换成本最低的一支,雅特力官方宣称代码兼容度 90% 以上、多数型号 Pin-to-Pin 可换。 但「兼容」不等于「二进制兼容」—— 真正卡人的三件事是:① 把 STM32 的 RCC 时钟代码原样搬过来 PLL 配不出正确频率(AT32 叫 CRM,且 >72MHz 要置 PLLRANGE); ② 直接复用 .axf 与 STM32 启动文件,向量表与时钟初始化全错;③ 读保护一旦使能就触发整片擦除,救砖只能靠 AT-Link 救回。 本文按「装环境 → 建工程 → 编译 → 下载 → 调试 → 量产 → 移植」的真实顺序组织,每一段都给出可复制的命令、可对照的表格、以及该段最常踩的坑。

报告总结

雅特力官网把 AT32 的资料拆得非常细:数据手册(DS)讲电气与引脚、参考手册(RM)讲寄存器、 Firmware Library(BSP)含驱动库与几十个例程,而 Work Bench 用法又在另一个工具里。网上的中文教程绝大多数停留在「新建工程 → 点编译 → 点下载」这一步,一旦遇到 AT-Link 连不上、读保护、USB 枚举不上、STM32 代码搬不过来就无解。本文档做了三件官方分散文档没有做的事:

  • 把接力棒画清楚:明确指出「装 IDE」到「能断点调试」之间实际要经过哪几步,以及每一步做完了用什么现象验收。
  • 把坑写在坑发生的地方:不单独罗列「常见问题」,而是在讲每个环节时就把该环节的失效现象、原因、处置一起给出。
  • 标注来源与版本:所有数值型信息(引脚、电压、容量、寄存器地址、等待周期配置)都追溯到官方 DS/RM 的版本号。

读者路径

本文档共 20 章 + 5 个附录,按「先跑通、再理解」的顺序组织:

  • 只想尽快跑通第一个程序:第 4 章(装 Work Bench)→ 第 5 章(建工程点灯)→ 第 7 章(下载)→ 第 20 章(核查清单),四章足够。
  • 要做产品开发 / 选型:第 2 章家族选型 → 第 3 章架构差异 → 第 6 章工程结构 → 第 17 章硬件设计。
  • 调不通、报错:直接翻第 20 章故障排查速查表,按现象分层定位。
  • 要写驱动:第 9 章 GPIO → 第 10 章 NVIC → 第 11 章时钟 → 第 12~13 章外设。
  • 从 STM32 切过来:第 18 章是专门的移植对照,先看这一章能省两三天。
  • 做 USB 产品:第 14 章(含 crystal-less 免晶振方案)。
  • 做低功耗 / 电池产品:第 16 章低功耗,注意「待机唤醒等于一次复位」这件事。

1 · 文档导读与阅读路径

这一章说明本文档的边界:覆盖什么、不覆盖什么,以及为什么把内容按「流水线」而不是按「功能模块」组织。

1.1 覆盖范围

本文档覆盖从拿到一块 AT32 最小系统板,到固件跑起来、能在断点处停下来、并能量产烧录的完整链路:

  • 家族与选型:AT32F403A/F407/F413/F415/F421/F423/F425/F435/F437/WB415/A 系列等规格对照,以及按「成本 / 主频 / 外设 / 封装」的选型号思路。
  • 架构差异:Cortex-M4 内核、CRM 时钟复位管理、SRAM 扩展(ZW/NZW 与 EOPB0)、sLib 安全库区。
  • 开发环境:AT32 Work Bench 图形化配置、AT32 VSCode IDE、AT32 IDE、Keil/IAR Pack 的安装与首次配置。
  • 工程与构建:Firmware Library 目录结构、启动文件、链接脚本、器件宏、命令行编译、体积优化。
  • 下载与量产:ICP/ISP/IAP 三种模式、AT-Link 硬件形态与接线、BOOT 启动模式、命令行烧录。
  • 外设:GPIO/AFIO、NVIC、CRM 时钟、USART/SPI/I2C/ADC/DMA、定时器/PWM/RTC/看门狗、USB、Flash/USD。
  • 硬件与迁移:最小系统电路设计要点、从 STM32 移植的改动清单、批量排障。

1.2 不覆盖什么

以下内容超出本文档范围,需要时请查阅对应官方资料:

  • BLE 协议栈细节:AT32WB415 的蓝牙 5.0 协议栈 API、GATT 配置、射频认证属于独立的无线文档。
  • 以太网协议栈深度用法:F437 的 EMAC + LWIP 移植细节属于例程包中的独立示例。
  • 每一款封装的完整管脚定义:本文档只给最常用封装的关键引脚(调试、自举、电源、USB),完整管脚表请查对应 DS。
  • 寄存器位域全集:RM 有数百页寄存器描述,本文档只给关键模块的常用位域,写代码时仍需对着 RM 核一遍。
  • 电机算法本身:FOC / 无感观测器属于电机控制理论,本文档只覆盖相关外设资源与调试接口。

1.3 版本与命名约定

本文档通篇使用如下约定,避免歧义:

  • AT32 指雅特力(Artery Technology)的整个 Cortex-M 系列 MCU。
  • F1-class 指 F413 / F415 这类单 PLL、SYSCLK≤150MHz 的架构;F4-class 指 F403A/F407/F435/F437 这类含 PLL1/2/3、SYSCLK 240~288MHz 的架构。
  • 寄存器名优先用 AT32 官方命名(如 CRM、TMR、GPIOx_BSRE),对照 STM32 时再标 ST 名称。
  • 代码块以 AT32F415 为默认示例型号,跨系列差异处均单独说明。

1.4 事实来源与免责

本文档数值型信息主要来自雅特力官网公开资料(数据手册 DS、参考手册 RM、应用笔记 AN、BSP),基准版本如下:

资料版本 / 日期用途
AT32F415 数据手册 DSV2.02 / 2023-10-17引脚、电气参数、Flash/SRAM 容量
AT32F415 参考手册 RMV2.05 / 2025-06-03寄存器位域、时钟树、外设
AT32F415 Firmware LibraryV2.1.8 / 2025-11-24驱动库与例程
AN0117 F415 CRM 时钟指南V2.0.2PLL/时钟配置流程
AN0026 SRAM 扩展V2.0.0EOPB0 与 ZW/NZW
AN0065 sLib 安全库V2.0.2代码安全库区配置

芯片寄存器细节以用户手上对应型号的 RM 为准;本文档示例代码以说明原理为主,量产前请对照官方 BSP 的例程逐项核对。雅特力官网资源中心:arterychip.com/cn/product/AT32<系列>.jsp。

2 · AT32 家族全景与选型

这一章把 AT32 几十个型号收敛成「按场景选」的几条路径,并给出料号读法。选型错了后面全是返工,所以先花篇幅把家族讲透。

2.1 一句话认识 AT32

雅特力科技(Artery Technology)成立于 2016 年,总部与研发中心分布在重庆、深圳、苏州、上海、台湾,2018 年起正式对外销售,是专注于 ARM® Cortex®-M4 / M0+ 的国产 MCU 设计公司,已通过 ISO 9001、AEC-Q100、ISO 26262 等认证。AT32 的市场定位非常清晰:用 Pin-to-Pin 引脚兼容 + 寄存器近似兼容,做 STM32 的高性价比国产替代。

AT32 的核心卖点

① 引脚兼容:多数型号与对应 STM32 同封装 Pin-to-Pin,硬件可直接替换。
② 主频更高:同样的 M4 内核,AT32 常把主频推到 150~288MHz,高于多数同档 STM32。
③ 免晶振 USB:F415/F435/F437 的 USB Device 可用内部 HICK+ACC 校准,无需外部 48MHz 晶振。
④ SRAM 可扩展:F403A/F407/F435/F437 等可通过选项字节把部分 Flash 重映射为 SRAM,最大到 224KB / 512KB。

2.2 两大架构世代:F1-class 与 F4-class

理解 AT32 最关键的一件事:它内部按架构分两代,寄存器命名、时钟树、Flash 结构都不同,选型和写驱动前必须先判断手上的型号属于哪一代:

维度F1-class(F413 / F415)F4-class(F403A/F407/F435/F437)
PLL 结构单 PLL,PLLMULT x2~64含 PLL1/2/3,分数式 NS/MS/FR(F435/F437)
最高 SYSCLK150 MHz240(F403A/F407)/ 288 MHz(F437)
AHB 上限150 MHz120 MHz
APB1/APB2 上限75 MHz60 / 120 MHz(F403A)
Flash 结构FPEC(F1 式)单 bankbank 结构,含非零等待区 NZW
定时器命名TMRTMR(一致)
典型型号AT32F415RCT7(256KB/32KB)AT32F403AVGT7(1MB/224KB)

2.3 全家族规格速查

下表是常用型号的公开摘要(SRAM 区间含 EOPB0 扩展后的最大值)。封装、温度等以各系列 DS 为准。

产品线内核(FPU)主频MHzFlashKBSRAMKB关键外设亮点封装
F403A/F407M4F240256~102496→2242×CAN, 8×UART, XMC, F407 带 EMACLQFP48/64/100/144, QFN48
F413M4F20064~256642×ADC, 2×CAN, USBLQFP48/64/100
F415M4(无FPU)15064~25632CAN, OTG, 2×COMP, 免晶振USBQFN32, LQFP32/48/64
F421M4(无FPU)12016~6416ADC, COMPLQFP32/48, QFN32
F423M4F150256485.33Msps ADC, 2×DAC, OTG, XMCLQFP36/48/64/100, QFN32
F425M4(无FPU)9632~6420CAN, 4×UART, OTGLQFP32/48/64
F435M4F288256~4032384→5123×ADC, 2×QSPI, SDRAM, 2×OTGQFN48, LQFP48/64/100/144
F437M4F288256~4032384→512EMAC+PHY, 3×CAN, 2×OTG, SDRAMQFN48, LQFP48/64/100/144
WB415M415025632BLE 5.0, USBQFN48/LQFP
A403AM4F(车规)200256~1024224AEC-Q100, 2×CAN, XMC, USBLQFP48/64/100/144
SRAM 的「扩展」不是白送的

以 F403A 为例:出厂默认 SRAM 是 96KB,宣传的 224KB 是经 用户选项字节 EOPB0 把部分 Flash 重映射成 SRAM 得到的。扩展出的 SRAM 实质减少零等待(ZW)Flash 容量。修改 EOPB0 后必须系统复位才生效,且需在启动文件早期执行扩展代码(见 AN0026)。链接脚本一定要按实际生效值填。

2.4 高性能主流:F403A / F407

这两颗是 AT32 的「旗舰替代」定位,Cortex-M4F 带 FPU、240MHz,256KB~1MB Flash,SRAM 经 EOPB0 扩到 224KB。F407 额外集成 EMAC 以太网 MAC(部分方案外置 PHY),均含 USB、XMC(外部存储器控制器,可接 SRAM/NOR/NAND/8080 屏)、双 CAN。直接对标 STM32F103/F205/F407,适合工业控制、PLC、伺服驱动、带屏显的网关。

2.5 性价比主流:F413 / F415

F413 是带 FPU 的 200MHz 通用型(64~256KB);F415 是本文默认示例型号:Cortex-M4(无 FPU)、150MHz、最高 256KB Flash / 32KB SRAM,亮点是 USB OTG FS 支持 crystal-less 免晶振 Device 模式、CAN、两路比较器。对标 STM32F103/F072,是消费电子、USB 外设、小网关的主力料。

F415 没有 FPU —— Keil 里别选错内核

AT32F415 / F421 / F425 不带浮点单元。在 Keil 选器件时 Kernel 应显示 Cortex-M4(不是 Cortex-M4F);FPU 相关编译选项要关掉。F403A/F407/F413/F435/F437 才带 FPU。选错会导致 hard fault 或浮点运算异常。

2.6 超值小封装:F421 / F423 / F425

这三颗主打低成本小封装(LQFP32/QFN32),96~150MHz:

  • F421:M4 无 FPU,16~64KB,带 ADC 与比较器,对标 STM32F030。
  • F423:M4F,256KB,5.33Msps ADC + 2×DAC + USB OTG + XMC,小封装里外设最全。
  • F425:M4 无 FPU,96MHz,带 CAN + 4×UART + OTG,性价比高。

2.7 超高性能大容量:F435 / F437

AT32 的「性能天花板」:Cortex-M4F、288MHz(55nm 工艺,M4 业界最高之一),256KB~4032KB Flash,SRAM 384→512KB。F437 集成 EMAC 以太网(含部分 PHY 特性)、双 USB OTG(HS+FS,Device 模式 crystal-less)、双 QSPI、SDRAM 接口、双 CAN、3×5.33Msps ADC,对标 STM32F405/F407/F427/F429。

2.8 无线与车载:WB415 / A 系列

  • AT32WB415:Cortex-M4、150MHz、256KB/32KB,内置 Bluetooth LE 5.0(BQB 认证),面向 IoT 无线终端、电池设备。
  • AT32A403A / A423:车规级(AEC-Q100)版本,参数与 F403A/F423 一致,面向车载与高可靠场景。

2.9 料号怎么读

以 AT32F415RCT7 为例,逐段拆解:

字段示例值含义
产品族AT32基于 ARM 的 32 位 MCU 系列
类型FF=通用;L=低功耗;A=车载;W=无线
内核44=Cortex-M4;0=M0+
子系列15产品应用别(15=USB OTG/Host 类)
引脚数RR=64;C=48;K=32;T=36;V=100;Z=144
FlashCC=256KB;B=128KB;8=64KB;6=32KB;4=16KB;E=512KB;G=1024KB
封装TT=LQFP;U=QFN;P=TSSOP;H=BGA;Y=WLCSP
温度77=-40~+105℃;6=-40~+85℃;3=-40~+125℃(部分)
引脚数 / Flash 代码跨系列不完全一致

不同子系列的「子系列别数字」「引脚数」「Flash 代码」映射以对应 DS 的 Part numbering 表为准,不要跨系列套用上表。例如 F4212 的封装代码、L021 的引脚代码都有差异。

2.10 选型决策路径

把上面这些收敛成五个问题的决策树,从上往下问,命中即停:

AT32 开发的五段式流水线 —— 每一段做完都要有一个「能验收的标志」上一段没配对,下一段的症状一定伪装成别的东西① 硬件开发板 / 最小系统AT-Link + BOOT0验收标志 ↓② 环境Work Bench / VSCode能建空工程并编译验收标志 ↓③ 构建GCC / 链接脚本产出 .elf / .hex验收标志 ↓④ 下载AT-Link / ISP提示下载成功验收标志 ↓⑤ 调试断点 / printf能停在 main()验收标志 ↓本指南的写法:每一段都给「症状 → 原因 → 处置」三元组第 4~8 章走完流水线的中段;第 9~16 章是跑起来之后的外设与系统细节;第 17~20 章是硬件、移植与排障。
图 1 · AT32 开发的五段式流水线与本文档的组织逻辑
AT32 与 STM32 的兼容边界:硬件 Pin-to-Pin,软件 90% 但要改这几处兼容是「迁移友好」,不是「二进制兼容」—— 直接搬 .axf / 启动文件会跑飞✓ 硬件兼容(直接替换)Pin-to-Pin 引脚电压域 2.6~3.6V多数外设寄存器地址布局一致应用层算法逻辑可复用Cortex-M4 指令集兼容✗ 必须改(否则跑不起来)RCC → CRM 时钟命名TIM → TMR 定时器命名启动文件 / 向量表偏移system_at32f4xx.c 重算时钟Flash 页大小 / 选项字节布局△ 架构级差异F415 无 FPUSRAM 可扩展(EOPB0)USB Device 免晶振sLib 安全库区GPIO 速度编码顺序不同
图 2 · AT32 与 STM32 的兼容边界:硬件可换、软件要改
  • 第一次接触就买 AT-START-F415 或 AT-START-F403A 官方板,板载 AT-Link 电路与排针,能省掉一半接线类故障。
  • 同一产品线内优先选大 Flash 那一档。AT32 各档差价极小,后期发现 Flash 不够的成本远高于差价。
  • 需要量产烧录先确认 AT-Link 命令行(AT-Link Console),别等到产线上才发现只有 GUI 版本。
  • 要免晶振 USB 优先 F415/F435/F437,能省一颗 48MHz 晶振与两颗负载电容,BOM 与面积都降。

3 · 内核与架构:Cortex-M4 与 Artery 的差异点

AT32 不是简单贴牌 STM32。它在标准 Cortex-M4 之上加了一批 Artery 自研模块(CRM、PWC、sLib、ACC),这些正是「90% 兼容但 10% 要改」的那 10%。这一章把它们讲清楚。

3.1 Cortex-M4F 内核

AT32 主力是 ARM Cortex-M4,F403A/F407/F413/F423/F435/F437 带 FPU(浮点单元),F415/F421/F425 不带 FPU。内核自带 24 位 SysTick 自减计数器、NVIC 嵌套向量中断控制器、可选的 MPU、以及 DWT/ITM/SWO 调试追踪单元。指令集与 STM32 同代完全一致,应用层算法(PID、滤波、FOC 数学)基本可直接搬。

FPU 对选型的影响

做电机 FOC、数字滤波、浮点标定的项目,优先选带 FPU 的 F403A/F407/F413/F423/F435/F437;F415/F421/F425 无 FPU,浮点运算靠软件库,性能差一个量级,且 Keil 里 Kernel 须选 Cortex-M4 而非 Cortex-M4F。

3.2 Artery 自研模块总览

除了标准 M4 内核,AT32 的差异点集中在下面几个 Artery 自研 IP:

模块AT32 命名作用与 STM32 对照
时钟复位管理CRM时钟源选择、PLL、总线分频、复位状态对应 STM32 的 RCC
电源控制PWC/PWR低功耗模式、PVM 电压监测、LDO 电压对应 STM32 的 PWR
安全库区sLib代码「可执行不可读」区STM32 无对应物
ACC 校准ACCHSI 自动校准,支撑 USB crystal-lessSTM32 用外部晶振
GPIOGPIOx端口配置(CFGLR/CFGHR/BSRE/BRE)命名不同,速度编码顺序不同
定时器TMR高级/通用/基本定时器对应 STM32 的 TIM

3.3 CRM 时钟复位管理(对照 STM32 RCC)

这是移植时改动量最大的一块。STM32 的 RCC 在 AT32 里叫 CRM(Clock & Reset Management),寄存器名与配置流程都不同:

功能STM32 (RCC)AT32 (CRM)
外设时钟使能RCC_AHBPeriphClockCmd(...)crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE)
系统时钟切换RCC_SYSCLKConfig(...)crm_sysclk_switch(CRM_SCLK_PLL)
PLL 配置RCC_PLLConfig(...)crm_pll_config(...) 单独设 PLLMULT
总线分频RCC_HCLKConfig / PCLK1 / PCLK2CRM_CFG 的 AHBDIV/APB1DIV/APB2DIV
时钟源使能RCC_HSICmd / HSECmdcrm_hick_enable / crm_hext_enable
复位状态RCC_GetFlagStatus(...)crm_flag_get / crm_reset_flag_get

F415(F1-class)是单 PLL:输入 HICK(4MHz)/HEXT/HEXT÷2,经 PLLMULT x2~x64 倍频,SYSCLK 上限 150MHz,AHB/APB1/APB2 上限 150/75/75MHz。F435/F437(F4-class)则是 PLL1/PLL2/PLL3 分数式结构,PLL1 主系统时钟可到 288MHz,PLL2/PLL3 给 I2S/USB 等外设。

3.4 SRAM 扩展(ZW/NZW 与 EOPB0)

AT32 的 Flash 分为零等待区(ZW)与非零等待区(NZW)。出厂默认把一部分容量配成 SRAM(零等待、运行快),其余是 Flash。通过用户选项字节 EOPB0 可以重新划分 ZW/ NZW/SRAM 的边界:

  • F403A:默认 SRAM 96KB,经 EOPB0 可扩到 224KB(代价是减少 ZW Flash)。
  • F435/F437:默认 384KB,可扩到 512KB。
  • F415 不做分档,SRAM 固定 32KB。
改 EOPB0 是「硬件级」操作

EOPB0 写在用户选项字节区,修改后必须系统复位才生效,且启动文件早期要跑一段扩展代码(官方 AN0026 提供),否则 SRAM 不会变大。链接脚本的 IRAM 大小一定要与最终生效值一致,否则堆栈溢出会导致诡异 hard fault。

3.5 sLib 安全库区

sLib(Security Library)是 AT32 独有的代码保护机制:可以把某段 Flash 设为「可执行但不可读」的安全库区,用于交付给第三方的算法(比如电机库、加密库)防止被逆向。解锁键 0xA35F6D24,区域由 SLIB 起始/结束地址定义。AT32F415 的 sLib 可覆盖 Sector 4~63(xB)/ 2~127(xC)。

3.6 与 STM32 的兼容边界

把第 2 章图 2 的结论落到可执行的清单:硬件 Pin-to-Pin 可换,软件 90% 可复用但要改这一批。具体清单见附录 B(AT32 与 STM32 寄存器/宏对照表)与第 18 章(移植)。移植前务必把下面这些当成「必改项」:

  • 启动文件换成 startup_at32f4xx.s,向量表偏移、向量名不同(如 TMR1 vs TIM1)。
  • 时钟换 system_at32f4xx.c,CRM 重算 PLL,>72MHz 置 PLLRANGE。
  • 外设库换成 at32f4xx_*.c/.h,类型名 GPIO_Type(无 Def 后缀)、引脚宏 GPIO_Pins_1。
  • Flash/选项字节改用 AT32 库与 ICP/ISP 工具,页大小与 STM32 不同。

4 · 开发环境:Work Bench / AT32 IDE / VSCode IDE

雅特力的工具生态比多数国产 MCU 完整:既有官方图形化配置工具,也有免费跨平台的 VSCode IDE。这一章把四条路线讲清楚,并给出安装期最常见的坑。

4.1 官方工具矩阵

雅特力对外提供四类 IDE 路线 + 三类调试器驱动包(Pack)。下表是 2026 年官网公开的版本摘要:

工具版本(参考)平台用途
AT32 Work BenchV1.2.06Win / Linux图形化时钟/PIN/中间件配置,生成 Keil/IAR/AT32 IDE 工程
AT32 VSCode IDEV1.0.5Win / Linux免费跨平台,GCC+CMake+OpenOCD 一体化
AT32 IDEV1.0.05Eclipse 系内置 GNU 工具链,离线 IDE
Keil Pack (DFP)V2.5.5Keil MDK5ArteryTek.AT32F415_DFP
IAR AddOnV2.3.9IARIAR_AT32MCU_AddOn
SEGGER AddOnV2.0.23J-LinkJLink 设备支持与 Flash 算法
OpenOCD(官方)V2.0.6跨平台AT32 专用 Flash 驱动

⚠ 版本号以官网下载页实时值为准(中国站 arterytek.com 通常比台湾站 arterychip.com 更新快一两版)。

4.2 AT32 Work Bench 图形化配置

AT32 Work Bench(不是 "AT32Cube",网上流传的 AT32CubeMX 是社区叫法,官方不存在)是雅特力官方的图形化配置工具,功能对标 STM32CubeMX:

  • 外设初始化配置、PIN MUX 与自定义引脚标签、系统时钟自动化配置。
  • 内置 FreeRTOS、USB_DEVICE、USB_HOST 中间件,可在线代码预览。
  • 支持 add user code 保护区(/* add user code begin ... */ 之间代码重生成不丢)。
  • 可生成 Keil / IAR / AT32 IDE 工程(不生成 HAL、不生成 .ioc)。
Work Bench 使用流程(WK0001~WK0004)

① 启动选器件 → ② 配外设/PIN/NVIC/时钟/中间件 → ③ Package Manager 挂 BSP → ④ Generate Code 选 Toolchain(MDK_V5 等)、Heap/Stack 建议 0x200 / 0x400。生成的工程直接在 Keil 打开即可编译。

4.3 AT32 VSCode IDE(推荐)

这是目前最推荐的入门路线——免费、跨平台、自带工具链。在 VSCode 扩展市场搜 arterytek.at32-vscode-ide 安装,扩展会自动提示安装 5 项依赖:GCC ARM toolchain → CMake → Ninja → OpenOCD → Templates。

常用命令(命令面板 Ctrl+Shift+P):AT32: New Project、AT32: Open AT32 Project、Import AT32 WK CMake Project、Import Keil MDK Project。侧边栏的 Actions 区提供 Build / Rebuild / Erase / Download / Debug / Clean All。

4.4 AT32 IDE 与 Keil / IAR

AT32 IDE 是基于 Eclipse 的跨平台 IDE,内置 GNU ARM(arm-none-eabi)工具链 + GCC Make + GDB,模板工程在 BSP 的 project/at_start_xxx/templates/at32_ide/。

用 Keil / IAR 的老项目迁移路线:装对应的 ArteryTek.AT32F4xx_DFP Pack,新建工程时选厂商 ArteryTek → 系列 AT32F415 → 具体型号;Target 里 IROM1=0x08000000,IRAM1=0x20000000;C/C++ → Define 填完整型号宏如 AT32F415RCT7。J-Link 需 ≥ 6.20C。

4.5 安装阶段最常见的五个坑

坑现象处置
Pack 没装对厂商Keil 设备列表找不到 AT32厂商选 ArteryTek,不是 ST;确认 DFP 版本匹配
VSCode 依赖没装全提示找不到 arm-none-eabi-gcc按扩展提示依次装 GCC/CMake/Ninja/OpenOCD
OpenOCD 用了开源版Flash 驱动不兼容,烧录失败务必用雅特力官方 OpenOCD V2.0.6,别用通用版
J-Link 版本过旧Flash Download failed - Cortex-M4升级到 J-Link ≥ 6.20C
DFP 选错器件型号(FPU)编译/调试异常F415 选 Cortex-M4(无 FPU);F403A/F407 选 Cortex-M4F
四种官方 IDE 路线:从零基础到工程化量产各自怎么选推荐顺序:VSCode IDE(免费、跨平台、带 OpenOCD)→ Work Bench(配时钟/引脚)→ Keil/IAR(老项目)AT32 VSCode IDE免费 / 跨平台GCC+CMake+OpenOCD入门首选AT32 Work Bench图形化配置时钟/PIN/中间件配寄存器最省事AT32 IDEEclipse 系内置 GNU 工具链离线 IDEKeil / IAR + Pack商业 IDEArteryTek DFP老项目迁移
图 3 · 雅特力官方开发工具矩阵与选型建议

补充:雅特力没有官方 "AT32-CubeProgrammer"(那是 ST 的工具),烧录工具统一叫 ICP Programmer / ISP Programmer / AT-Link Console(详见第 7 章)。

5 · 第一个工程:从新建到点亮 LED

这一章走通最小闭环:新建工程 → 配置时钟与引脚 → 编译 → 下载 → LED 翻转。所有「新手第一大坑」都前置在这里。

5.1 官方 BSP 与例程包结构

雅特力把驱动库、例程、模板都打包在 Firmware Library 里(GitHub ArteryTek/AT32F415_Firmware_Library 或 Gitee arterytek/AT32F415_Firmware_Library,V2.1.8)。目录结构见下图:

AT32F415_Firmware_Library 顶层结构(V2.1.8)AT32F415_Firmware_Library/├─ libraries/│ ├─ cmsis/ (core_cm4.h, at32f415.h, system_at32f415.c, startup_at32f415.s)│ └─ drivers/ (at32f415_gpio.c/h, crm.c/h, usart.c/h, adc.c/h ...)├─ middlewares/│ ├─ freertos/ usb_drivers/ usbd_class/ usbh_class/ fatfs/ i2c_application/├─ project/at_start_f415/│ ├─ templates/ (mdk_v5, iar_v8.2, at32_ide, eclipse_gcc)│ └─ examples/ (gpio, adc, usart, spi, i2c, tmr, usb_device ...)└─ utilities/ └─ at32f415_usart_iap_demo / usb_iap_demo / slib_demo ...
图 4 · AT32F415 Firmware Library 目录树(官方 BSP V2.1.8)

最省力的方法是用 project/at_start_f415/templates/ 下的模板工程(选 mdk_v5 / at32_ide / eclipse_gcc),它已包含启动文件、时钟配置、中断文件与 main.c,改改就能编译。

5.2 用 Work Bench 新建工程

如果用 AT32 Work Bench(或 VSCode IDE 的 New Project 向导),流程如下:

  • 选器件:搜 AT32F415 → 选具体型号(UI 会显示 Core Frequency/Flash/SRAM/GPIOs)。
  • 配 GPIO:把 PA0(接 LED 的引脚)设为 GPIO_Output。
  • 配时钟:选 HEXT 8MHz → PLL → 150MHz(或默认)。
  • Generate Code:Toolchain 选 MDK_V5,Heap 0x200 / Stack 0x400,勾 Keep User Code。
  • 在生成的 main.c 里写翻转逻辑,Keil 打开编译下载。

5.3 工程目录与关键文件

文件作用备注
startup_at32f415.s启动文件,含向量表与复位入口mdk/gcc/iar 三份同名
system_at32f415.c/.h系统时钟初始化(SystemCoreClock)必须换 AT32 版
at32f415.h器件主头文件不是 stm32f10x.h
at32f415_conf.h库模块开关(*_MODULE_ENABLED)按需开启
at32f415_clock.c时钟配置(默认频率路径)模板自带
at32f415_int.c中断服务文件模板自带
AT32F415xC_FLASH.ldGCC 链接脚本(256K/32K)按容量档选 x8/xB/xC

5.4 编译与产物

编译后关键产物:

  • text / data / bss 三行数字(Keil Build Output 或 GCC arm-none-eabi-size)—— 用来核对 Flash/SRAM 占用。
  • .elf:含调试信息,下载与调试用。
  • .hex / .bin:量产烧录用(bin 需指定起始地址 0x08000000)。

5.5 点亮 LED 的完整代码

以 PA0 接 LED(低电平点亮)为例,下面是可直接编译的最小代码。注意三处新手必坑已在注释里标红:

#include "at32f415.h"
#include "at32f415_clock.h"     /* 系统时钟配置,来自模板 */

int main(void)
{
    system_clock_config();        /* 配置 PLL → 150MHz,漏这行时钟不对 */

    /* ① 开 GPIOA 时钟(在 CRM 上)—— 漏这行 LED 永远不亮,编译器不报错 */
    crm_periph_clock_enable(CRM_GPIOA_PERIPH_CLOCK, TRUE);

    /* ② 配置 PA0 为推挽输出 */
    gpio_init_type gpio_init_struct;
    gpio_default_para_init(&gpio_init_struct);
    gpio_init_struct.gpio_pins        = GPIO_Pins_0;
    gpio_init_struct.gpio_mode        = GPIO_Mode_OUT_PP;   /* 通用推挽 */
    gpio_init_struct.gpio_out_type    = GPIO_Output_PushPull;
    gpio_init_struct.gpio_pull        = GPIO_Pull_None;
    gpio_init_struct.gpio_drive_strength = GPIO_Drive_Strength_Stronger;
    gpio_init(GPIOA, &gpio_init_struct);

    while (1)
    {
        gpio_bits_set(GPIOA, GPIO_Pins_0);      /* 置 1,LED 灭(低电平亮) */
        delay_ms(300);
        gpio_bits_reset(GPIOA, GPIO_Pins_0);    /* 清 0,LED 亮 */
        delay_ms(300);
    }
}
跑到这一步的三大必坑

① 漏开 CRM 外设时钟:GPIO 在 CRM 总线上,不使能时钟引脚无响应,且编译/下载都不报错。
② 用错时钟配置:直接搬 STM32 的 SystemInit 会因 CRM 命名不同而崩溃。
③ 引脚宏写错:AT32 是 GPIO_Pins_0(复数 Pins),不是 STM32 的 GPIO_Pin_0。

从「空工程」到「LED 翻转」的最小闭环每一步都有可验收现象;任何一步没现象,问题就锁定在那一步① 选器件F415RCT7② 开 GPIOA 时钟CRM enable③ 配 PA0 输出gpio_init④ 编译.elf/.hex⑤ 下载AT-Link⑥ 翻转 PA0LED 闪
图 5 · 第一个工程的最小闭环:选器件 → 开时钟 → 配引脚 → 编译 → 下载 → 翻转

验收标准:编译输出有 text/data/bss 三行;obj/ 同存 .elf 与 .hex;下载成功且 LED 按 300ms 节奏翻转。三条全中说明「工具链 + 下载链路 + 最小系统」全部正常,可以进入第 7 章正式研究下载原理。