本帖最后由 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显示屏。
|
你这是用KELI的开发环境可以介绍一下其开发环境的配置,不过现在雅特力的配置工具也是挺顺手的了,代码风格和STM32很像