【AT-START-F405测评】A1.workbench + ATIDE / 纯VSOCDE+EIDE 开发环境搭建 点灯
安装 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 = {LED2_GPIO, LED3_GPIO, LED4_GPIO};
uint16_t led_gpio_pin = {LED2_PIN, LED3_PIN, LED4_PIN};
void at32_led_off(led_type led)
{
if (led > (LED_NUM - 1))
return;
if (led_gpio_pin)
led_gpio_port->scr = led_gpio_pin;
}
void at32_led_toggle(int led)
{
if (led > (LED_NUM - 1))
return;
if (led_gpio_pin)
led_gpio_port->togr = led_gpio_pin;
}
at32_led_off(0);
at32_led_off(1);
at32_led_off(2);
[*]增加LED驱动代码
3. 下载 调试
[*]使用 AT32 IDE 下载
- 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.工程导入
[*]导入 workbench 创建的工程
- 导入之后存在一个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
[*]main里面调用
[*]
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支持
- pyocd list --targets
- 里面没有雅特力的支持,但是我看到 at32ide 里面有pyocd的支持,可以下载MDK支持包,pyocd可以根据MDK支持包来支持第三方的MCU配置
[*]手动使用openocd下载
- 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中调试
[*]配置vscode的launch.json
{
"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会读取这些寄存器的值显示出来
[*]F5
-
- 可以看到,左下角已经显示了 GPIO 寄存器的数值
我一直很好奇,EIDE里的Builder Configurations选项可以设置使用AC5或AC6编译器吗? 这个是非常完美的教程了。 雅特力出自己的配置工具和IDE呢? EIDE导入AT32 IDE项目时,确实没有导入.s文件,这里需要在APP NOTE中特别说明一下。 万能的互联网 发表于 2024-4-30 00:31
我一直很好奇,EIDE里的Builder Configurations选项可以设置使用AC5或AC6编译器吗? ...
可以,但没办法调试。MDK的工具链只能调用编译,GDB没放到外面,意义不大。另外.s启动文件也要换成MDK版本的,其他一样就行。 tinnu 发表于 2024-5-9 08:34
可以,但没办法调试。MDK的工具链只能调用编译,GDB没放到外面,意义不大。另外.s启动文件也要换成MDK版 ...
感谢你抽空解答我的疑惑,可以编译就很好了,又多一个编译环境可以选择。调试用回Keil也行,毕竟Keil只是代码提示和搜索等这些比较拉跨,调试功能并不拉跨。
页:
[1]