安装 workbench 及 at32 IDE- 从官网下载 workbench 软件及 at32 IDE 软件
- 下载: https://www.arterytek.com/cn/product/AT32F405.jsp#Resource
创建 workbench 工程- 选择 AT32F405 默认创建
-
- 在 GPIO 页面初始化三个LED引脚为输出 PF4 PF5 PF6
-
- 生成代码,代码目录,工程文件都在project下面
AT32 IDE 开发1. 工程导入- 使用 AT32 IDE 导入
-
-
2. 点灯
#define LED2_PIN GPIO_PINS_4
#define LED2_GPIO GPIOF
#define LED2_GPIO_CRM_CLK CRM_GPIOF_PERIPH_CLOCK
#define LED3_PIN GPIO_PINS_5
#define LED3_GPIO GPIOF
#define LED3_GPIO_CRM_CLK CRM_GPIOF_PERIPH_CLOCK
#define LED4_PIN GPIO_PINS_6
#define LED4_GPIO GPIOF
#define LED4_GPIO_CRM_CLK CRM_GPIOF_PERIPH_CLOCK
#define LED_NUM 3
gpio_type *led_gpio_port[LED_NUM] = {LED2_GPIO, LED3_GPIO, LED4_GPIO};
uint16_t led_gpio_pin[LED_NUM] = {LED2_PIN, LED3_PIN, LED4_PIN};
void at32_led_off(led_type led)
{
if (led > (LED_NUM - 1))
return;
if (led_gpio_pin[led])
led_gpio_port[led]->scr = led_gpio_pin[led];
}
void at32_led_toggle(int led)
{
if (led > (LED_NUM - 1))
return;
if (led_gpio_pin[led])
led_gpio_port[led]->togr = led_gpio_pin[led];
}
at32_led_off(0);
at32_led_off(1);
at32_led_off(2);
3. 下载 调试 - run - Debug Configuration
- GDB AT-Link Debugging
- 选中后直接关掉即可,默认配置就可以下载
vscode + EIDE 开发1. 环境安装- 安装 EIDE 、 C/C++ 、 cortex-debug 插件
-
- 配置 EIDE 编译链、cortex-debug openocd 地址
-
- 其中 cortex-debug.openocdPath.linux 和 EIDE.OpenOCD.ExePath 是一样的
- 如果是windows下,就是 cortex-debug.openocdPath.windows
- OpenOCD的路径就选择之前安装的 AT32 IDE 里面的openocd,如果是openocd主线程,目前还不支持雅特力的芯片
2. 工程导入 - 导入之后存在一个BUG,就是不会将.s汇编导入,导致编译出来的固件无法运行
- 手动导入asm文件
-
- 在主线程openocd的 target 目录下没找到 at32f405xx.cfg
- 不过at32ide里面有,而且 interface 目录下还有 atlink 专门的支持
- 之前配置了openocd路径之后,就可以选择雅特力的芯片(如果配置错了是找不到的)
-
3. 增加板件驱动- 从函数库里面找到 at32f402_405_board.c 文件加入工程
- 添加宏定义 AT_START_F405_V1
- 增加usart驱动函数库
- 在 at32f402_405_conf.h 中
- 增加 #define USART_MODULE_ENABLED
delay_init();
while(1)
{
delay_ms(100);
at32_led_toggle(0);
delay_ms(100);
at32_led_toggle(1);
delay_ms(100);
at32_led_toggle(2);
}
vscode中下载 - pyocd list --targets
- 里面没有雅特力的支持,但是我看到 at32ide 里面有pyocd的支持,可以下载MDK支持包,pyocd可以根据MDK支持包来支持第三方的MCU配置
- D:\AT32IDE\OpenOCD\bin\openocd.exe -f interface/atlink.cfg -f target/at32f405xx.cfg -c "program xxx.elf verify" -c "reset run" -c "exit"
- 使用 EIDE 支持一键下载
-
vscode中调试
{
"cwd": "${workspaceRoot}",
"executable": "./project/AT32_IDE/build/Debug/tinnu-mcu-at32f405-05.elf",
"name": "Debug with OpenOCD",
"request": "attach",
"type": "cortex-debug",
"servertype": "openocd",
"configFiles": [
"interface/atlink.cfg",
"target/at32f405xx.cfg"
],
"searchDir": [],
"gdbPath": "xxx/arm-none-eabi-gdb",
"svdPath": "./project/AT32_IDE/SVD/AT32F405xx_v2.svd",
"runToEntryPoint": "main",
"showDevDebugOutput": "none"
}
- 其中 gdbPath 是指定工具链里面的gdb地址
- svdPath 是workbench生成的寄存器地址,之后cortex-debug会读取这些寄存器的值显示出来
-
- 可以看到,左下角已经显示了 GPIO 寄存器的数值
|