tinnu 发表于 2024-4-28 12:04

【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 寄存器的数值

万能的互联网 发表于 2024-4-30 00:31

我一直很好奇,EIDE里的Builder Configurations选项可以设置使用AC5或AC6编译器吗?

lulugl 发表于 2024-5-2 07:16

这个是非常完美的教程了。

caigang13 发表于 2024-5-4 21:32

雅特力出自己的配置工具和IDE呢?

bobyang136 发表于 2024-5-7 15:38

EIDE导入AT32 IDE项目时,确实没有导入.s文件,这里需要在APP NOTE中特别说明一下。

tinnu 发表于 2024-5-9 08:34

万能的互联网 发表于 2024-4-30 00:31
我一直很好奇,EIDE里的Builder Configurations选项可以设置使用AC5或AC6编译器吗? ...

可以,但没办法调试。MDK的工具链只能调用编译,GDB没放到外面,意义不大。另外.s启动文件也要换成MDK版本的,其他一样就行。

万能的互联网 发表于 2024-5-10 23:23

tinnu 发表于 2024-5-9 08:34
可以,但没办法调试。MDK的工具链只能调用编译,GDB没放到外面,意义不大。另外.s启动文件也要换成MDK版 ...

感谢你抽空解答我的疑惑,可以编译就很好了,又多一个编译环境可以选择。调试用回Keil也行,毕竟Keil只是代码提示和搜索等这些比较拉跨,调试功能并不拉跨。
页: [1]
查看完整版本: 【AT-START-F405测评】A1.workbench + ATIDE / 纯VSOCDE+EIDE 开发环境搭建 点灯