[AT32F405]

【AT-START-F405测评】A1.workbench + ATIDE / 纯VSOCDE+EIDE 开发环境搭建 点灯

[复制链接]
914|6
手机看帖
扫描二维码
随时随地手机跟帖
tinnu|  楼主 | 2024-4-28 12:04 | 显示全部楼层 |阅读模式
安装 workbench 及 at32 IDE
  • 从官网下载 workbench 软件及 at32 IDE 软件
  • 下载: https://www.arterytek.com/cn/product/AT32F405.jsp#Resource
创建 workbench 工程
  • 选择 AT32F405 默认创建
  • 1.wb-all.png
  • 在 GPIO 页面初始化三个LED引脚为输出 PF4 PF5 PF6
  • 1.wb-gpio.png
  • 生成代码,代码目录,工程文件都在project下面
AT32 IDE 开发1. 工程导入
  • 使用 AT32 IDE 导入
  • 2-ide-import.png
  • 1.wb-list.png
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);


  • 增加LED驱动代码
3. 下载 调试
  • 使用 AT32 IDE 下载
    - run - Debug Configuration
  • 3.import.png

    - GDB AT-Link Debugging
  • 3.GDB.png
    - 选中后直接关掉即可,默认配置就可以下载
  • 点击小昆虫后可以调试
vscode + EIDE 开发1. 环境安装
  • 安装 EIDE 、 C/C++ 、 cortex-debug 插件
  • 4.1.eide.png
  • 配置 EIDE 编译链、cortex-debug openocd 地址
  • 4.2.配置工具链.png
    - 其中 cortex-debug.openocdPath.linux 和 EIDE.OpenOCD.ExePath 是一样的
    - 如果是windows下,就是 cortex-debug.openocdPath.windows
    - OpenOCD的路径就选择之前安装的 AT32 IDE 里面的openocd,如果是openocd主线程,目前还不支持雅特力的芯片
2.  工程导入
  • 导入 workbench 创建的工程
    - 导入之后存在一个BUG,就是不会将.s汇编导入,导致编译出来的固件无法运行
    - 手动导入asm文件
    - 4.3.手动导入asm文件.png
  • 配置下载功能
    - 在主线程openocd的 target 目录下没找到 at32f405xx.cfg
    - 不过at32ide里面有,而且 interface 目录下还有 atlink 专门的支持
    - 之前配置了openocd路径之后,就可以选择雅特力的芯片(如果配置错了是找不到的)
    - 4.4.ocd选项.png
  • 之后就可以直接编译下载了
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 支持一键下载
  • 4.5.下载.png
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
    -   4.6.debug.png
    - 可以看到,左下角已经显示了 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只是代码提示和搜索等这些比较拉跨,调试功能并不拉跨。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

68

帖子

0

粉丝