本帖最后由 suncat0504 于 2023-11-21 23:41 编辑
#申请原创# @21小跑堂
雅特力公司自己开发了用于单片机开发用的IDE和WorkBench。他的IDE是以Eclipse为蓝本的IDE,使用过Eclipse的一定会很喜欢,比如我。因为以前一直都是用Eclipse来开发基于Java的Web程序,对这个IDE比较熟练。而WorkBench是利用图形化界面,通过选择MCU的设备,进行一定的设置后,完成创建工程的工具,因为是全中文的,使用起来很方便我这种英语水平贼烂的人来使用。废话不多说,马上进入体验环节。这两个工具软件的下载连接可以在以下雅特力官网找到:
HYPERLINK "https://www.arterytek.com/cn/product/AT32F423.jsp#Resource"
下载后需要解压。安装IDE的时候,需要先说明一下好啊,使用eclipse一般是需要JRE的,但雅特力提供的IDE安装程序中已经提供了,所以不需要另外安装。
安装IDE的过程中,没出啥幺蛾子,很容易就安装完成了。至于WorkBench是可以直接运行的,不需要安装。
现在我们试着用这两个工具建立一个点亮板载LED的项目。这里我是用的是AT-START-F423 V1.1评估板。启动Work Bench,出现以下界面:
选择适合你评估板的MCU型号后,选择“新建”:
构建完成后:
因为我们只想建立一个最简单的点亮LED的工程,对于AT-START-F423 V1.1评估板,板载了好几个LED,我们使用其中的一个,它占用的GPIO口为GPIOD13。因此,我们选择左侧“外设”中的“GPIO”,此时界面发生了变化,
在右侧的芯片管脚配置图形中,选择“PD13”,在弹出的菜单中选择“GPIO_OUTPUT”
因为是要驱动LED嘛。完成后中间区域就会出现设置好的GPIO内容。
因为不再使用其他设备,到这里我们就算设置好了,所以可以生成代码了,点击“生成代码”菜单中的“生成代码”,
项目名称中,我们输入“LED”,项目位置一栏,我们需要找一个保存项目的位置。为了方便以后的操作,我们暂停目前的操作,打开雅特力的IDE,在进入IDE之前会有这个窗体,要求我们建立一个工作空间,作为IDE管理项目的地方,您可以随意设置。我设置为IDE所在的文件夹中,建立一个workspace的子文件夹,
点击“Launch”,没有问题的话,就会机内IDE的开发界面。
,到这里我们已经建立起了Work Space。回到Work Bench窗体,继续设置建立代码用的设置页面,
点击“项目设置”右侧的“浏览”按钮,选择我们之前在IDE文件夹建立起来的“workspace”子文件夹,
点击“选择文件夹”,
勾选“MCU固件包”中的“使用*.zip”固件包。在这里我们暂停一下,去前面的官网下载适合于我们的MCU的一个文件,就我而言是用AT32F423,所以下载名为“AT32F423_Firmware_Library_V2.0.2.zip”,一定要和你的MCU匹配哦。下载后,记住下载位置,点击“浏览”,找到它即可。当然你也“选择下载版本”,下载后会不会自动配置好“固件包位置”,我不知道。
然后点击“确定”。
然后就等着代码被生成。
建议“确定”关闭这个窗体。如果点击“打开项目”,很可能触发其他应用打开这个项目。当然你也可以选择点击“开发文件夹”。然后你可以在workspace文件夹中看到多了一个“LED”的文件夹,这个就是刚生成的项目。
在项目代码生成完成后,我们就可以回到IDE窗体,导入这个刚刚生成的项目了。
在左侧Project Explorer的空白区域点击鼠标右键,在弹出的菜单中选择“Import”(当然也可以从菜单“Fie”中找到“Import”子菜单来执行),
在弹出的窗体中,选择“General”中的“Existing Projects into Workspace”,点击“Next”,
在下一个窗体的“Select root directory”中输入你的workspace所在的文件夹,
在项目列表区域就会出现“LED”项目。
在这里多说一句,如果你生成的项目不是在workspace文件夹内,最好勾选“Copy projects into workspace”这个选项,避免以后出麻烦。这个选项表示载入工程的时候,会同时把不在workspace中的项目,直接拷贝到这个文件夹。以后所有的改动都是直接反映到这个workspace文件夹中的。
勾选我们要进行开发的项目“LED”后,点击“Finish”即可。然后这个项目就进到“Project Explorer”区了。这是我们可以浏览这个项目的构成和文件内容了。
使用Work Bench,既方便我们按照实际需求建立工程,减少不必要的代码,又可以快速建立工程,只使用必要的库文件,而不用自己东拼西凑去组织了。
还有一点,如果配合SVN插件,建立数据仓库,可以随时利用SVN功能保存我们的代码,方便我们对待吗进行更复杂的管理。如果你了解SVN的强大功能,一定会爱不释手。实际上,在使用git工具之前,我就是一直在用SVN进行代码管理工程文件的。
LED工程的结构如下,
如图所示,需要的文件不多。
现在我们打开main.c,看看主体代码,
IDE的右侧区域是函数列表区,方便我们快速定位函数代码的位置。中间是代码区。IDE布局您也可以根据自己的喜好进行调整。
- /* 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 "at32f423_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 */
- /* 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 */
- /* add user code end 0 */
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] take some delay for waiting power stable, delay is about 60ms with frequency 8MHz.
- * @param none
- * @retval none
- */
- static void wk_wait_for_power_stable(void)
- {
- volatile uint32_t delay = 0;
- for(delay = 0; delay < 50000; delay++);
- }
- /**
- * [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 */
- /* add a necessary delay to ensure that Vdd is higher than the operating
- voltage of battery powered domain (2.57V) when the battery powered
- domain is powered on for the first time and being operated. */
- wk_wait_for_power_stable();
-
- /* 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 */
- /* add user code end 3 */
- }
作为提示,代码中标注为add user code的块,就是您可以自己追加代码的地方。当然您也可以在其他地方,根据需要加代码。自动生成的只是为了方便给您加个提示。
对于我们这个LED工程,就是为了点亮或者闪烁LED,所以需要加一些代码来完成。可以使用gpio_bits_write函数,来设置GPIOD13的输出电平。
修改主程序代码如下:
- /* 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 "at32f423_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 */
- /* 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 */
- /* add user code end 0 */
- /**
- * [url=home.php?mod=space&uid=247401]@brief[/url] take some delay for waiting power stable, delay is about 60ms with frequency 8MHz.
- * @param none
- * @retval none
- */
- static void wk_wait_for_power_stable(void)
- {
- volatile uint32_t delay = 0;
- for(delay = 0; delay < 50000; delay++);
- }
- // 延时处理
- void delay(uint16_t ms)
- {
- uint32_t d = 0, n = 0;
- for(n = 0; n < ms; n++) {
- for(d = 0; d < 50000; d++) {
- }
- }
- }
- /**
- * @brief main function.
- * @param none
- * @retval none
- */
- int main(void)
- {
- /* add user code begin 1 */
- /* add user code end 1 */
- /* add a necessary delay to ensure that Vdd is higher than the operating
- voltage of battery powered domain (2.57V) when the battery powered
- domain is powered on for the first time and being operated. */
- wk_wait_for_power_stable();
-
- /* 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_write(GPIOD, GPIO_PINS_13, FALSE);
- delay(10);
- gpio_bits_write(GPIOD, GPIO_PINS_13, TRUE);
- delay(10);
- /* add user code end 3 */
- }
- }
只是追加了一个简单的、不精确的延时函数,以及在主函数的while中追加亮灭LED的代码。
编译没错误的话,在LED所在项目的文件夹下,会生成编译结果。在“project\AT32_IDE\Debug”下生成LED.hex文件。把这个文件下载到评估板上,运行起来后,应该就会看到LED闪烁了。
关于下载这一块,请参照“AT32 IDE 用户手册”中AT-Link 调试这一块进行设置。很简单。另外需要用typec电缆连接好电脑和你的评估板。在Project Explore中选择LED工程,选择菜单【Run】>【Debug Configurations…】打开调试配置对话框。双击 GDB AT-Link
Debugging,将自动创建 AT-Link 调试配置。
事实上,我也只是双击了“GDB AT-Link Debugging”后,就自动生成了LED的调试模式。这个时候,点击“Debug”,就会自动编译并下载程序到评估板,同时启动调试模式,可以单步运行程序的。运行开始后,会在main函数的第一条语句处进入暂停模式,你可以随意设置断点来跟踪程序的运行。如果是以“Run”模式启动的,那就是直接运行了,不会进入调试模式。
整个程序一旦运行起来,你应该能看到评估板上一个红色LED常亮,而另外一个红色LED是闪烁状态。这就是我们的程序中代码控制的结果。
怎么样,有了Work bench帮助开发,配合IDE,是不是简洁明了。个人感觉,比Keil可方便多了。毕竟eclipse这个大名鼎鼎的工具的便捷度,可真不是盖的。反正我是感觉非常爽!
|