打印
[AT32F405]

AT32F405RCT7-7之Work Bench实现点灯

[复制链接]
4873|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 shendu0032 于 2024-4-24 10:51 编辑

感谢二姨和雅特力给予这次测评的机会,让我有机会更深入的了解雅特力。此次测评的开发板型号是AT32F405RCT7-7,下面是实物图和芯片介绍。
拿到开发板首先需要查找资料,雅特力在共享资料方面非常用心,资料也很齐全,基本上一站式直接提供。在雅特力 (arterytek.com)官网里的产品讯息中的主流型MCU中有AT32F405。打开AT32F405系列芯片的详情页有下载资源介绍,一般选择我们需要的资料,比如:硬件资料(原理图)、软件资料(PACK包,AT Work Bench软件、BSP固件库等)、用户手册类。这些都在下载中心有详细的介绍。下面介绍AT Work Bench软件的使用。
AT Work Bench是雅特力针对MCU的图形化配置工具,以生成初始化C代码和对应的IDE项目,从而减少开发人员的工作量、时间和成本。官方提供Win和Linux系统下的安装包,需要申明的是在Win系统下,软件无需安装直接双击AT32_Work_Bench.exe。

Linux系统需要使用dpkg命令安装,这些说明和使用文件在下载的软件安装包里都有打包,解压缩之后可以提取对这款软件的使用说明。下面一步一步进行介绍。双击打开软件之后,第一步是选择MCU系列、型号。之后点击新建。当然如果之前有创建好的工程直接打开也可以。打开之后的界面简约大气,方便用户查找进行配置,右边的芯片示意图大小可以通过下面的放大缩小按钮调整。

首先配置系统的时钟,系统的时钟可以是外部时钟也可以是内部时钟。这款芯片内外时钟的最高频率达216MHz。


之后便是配置原理图中LED2~4这三个LED灯的GPIO引脚。

当这些配置完成之后,可以在代码预览窗口观察生成的代码

最后是生成代码,同样需要设置项目名称、地址、IDE、固件包。第一次配置需要安装相应的固件包,可以通过固件包管理按钮进入,有两种方式,一种是本地安装,这需要提前下载好固件包,第二种是网络安装,推荐网络安装。一切配置正常之后会弹出生成代码完成窗口。

下一步便是打开工程文件,在main.文件中编写LED电平翻转程序。
/* add user code begin Header */
/**
  **************************************************************************
  * [url=home.php?mod=space&uid=288409]@file[/url]     main.c
  * [url=home.php?mod=space&uid=247401]@brief[/url]    main program
  **************************************************************************
  *                       Copyright notice & Disclaimer
  *
  * The software Board Support Package (BSP) that is made available to
  * download from Artery official website is the copyrighted work of Artery.
  * Artery authorizes customers to use, copy, and distribute the BSP
  * software and its related documentation for the purpose of design and
  * development in conjunction with Artery microcontrollers. Use of the
  * software is governed by this copyright notice and the following disclaimer.
  *
  * THIS SOFTWARE IS PROVIDED ON "AS IS" BASIS WITHOUT WARRANTIES,
  * GUARANTEES OR REPRESENTATIONS OF ANY KIND. ARTERY EXPRESSLY DISCLAIMS,
  * TO THE FULLEST EXTENT PERMITTED BY LAW, ALL EXPRESS, IMPLIED OR
  * STATUTORY OR OTHER WARRANTIES, GUARANTEES OR REPRESENTATIONS,
  * INCLUDING BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY,
  * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT.
  *
  **************************************************************************
  */
/* add user code end Header */

/* Includes ------------------------------------------------------------------*/
#include "at32f402_405_wk_config.h"

/* private includes ----------------------------------------------------------*/
/* add user code begin private includes */

/* add user code end private includes */

/* private typedef -----------------------------------------------------------*/
/* add user code begin private typedef */
#define CPU_FREQUENCY_HZ 216000000UL  // 假设CPU主频为216MHz
/* add user code end private typedef */

/* private define ------------------------------------------------------------*/
/* add user code begin private define */

/* add user code end private define */

/* private macro -------------------------------------------------------------*/
/* add user code begin private macro */

/* add user code end private macro */

/* private variables ---------------------------------------------------------*/
/* add user code begin private variables */

/* add user code end private variables */

/* private function prototypes --------------------------------------------*/
/* add user code begin function prototypes */

/* add user code end function prototypes */

/* private user code ---------------------------------------------------------*/
/* add user code begin 0 */

void delay_ms(uint32_t milliseconds) {
    // 计算延时的CPU时钟周期数
    uint32_t cycles = (uint64_t)milliseconds * CPU_FREQUENCY_HZ / 1000;

    // 执行延时循环
    while (cycles--) {
        // 空循环
        __asm__("nop");
    }
}

/* add user code end 0 */

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url] main function.
  * @param  none
  * @retval none
  */
int main(void)
{
  /* add user code begin 1 */

  /* add user code end 1 */

  /* system clock config. */
  wk_system_clock_config();

  /* config periph clock. */
  wk_periph_clock_config();

  /* nvic config. */
  wk_nvic_config();

  /* init gpio function. */
  wk_gpio_config();

  /* add user code begin 2 */

  /* add user code end 2 */

  while(1)
  {
    /* add user code begin 3 */
                gpio_bits_toggle(GPIOF,LED2_PIN);
                delay_ms(100);
                gpio_bits_toggle(GPIOF,LED3_PIN);
                delay_ms(100);
                gpio_bits_toggle(GPIOF,LED4_PIN);
                delay_ms(100);
    /* add user code end 3 */
  }
}
效果就是LED2~4轮流点亮。这是用AT Work Bench软件配置的点灯程序,同时官方也有LED例程,在官网的AT32F405下面的Firmware Library中找到\AT32F402_405_Firmware_Library_V2.0.7\project\at_start_f405\examples\gpio\led_toggle\mdk_v5工程,编译成功后现象也是三个LED灯轮流点亮。需要注意的是使用板载的AT-LINK时,设置上应该选择DAP模式。
下一篇将介绍使用AT Work Bench配置IIC驱动OLED显示屏。

使用特权

评论回复
评论
qintian0303 2024-4-24 15:31 回复TA
你这是用KELI的开发环境可以介绍一下其开发环境的配置,不过现在雅特力的配置工具也是挺顺手的了,代码风格和STM32很像 
沙发
呐咯密密| | 2024-4-24 11:19 | 只看该作者
雅特力的AT Work Bench软件应该是国产工具中最好用的了。

使用特权

评论回复
板凳
WoodData| | 2024-4-24 23:35 | 只看该作者
学习学习

使用特权

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

本版积分规则

个人签名:总是缺乏自信,进进退退,走走停停,不停的自我耗损,又不断的为自我耗损而再耗损。

33

主题

260

帖子

6

粉丝