使用AT32 IDE和AT32 Work Bench开始第一个程序 前面已经准备好了硬件,以及开发环境,包括SDK、IDE和图形化配置工具。这次就来利用这些资料进行第一个程序的开发:点亮板子上的LED。
首先从硬件上找LED设计资源,从框图中可以看到有3个LED可由用户控制。
再结合原理图,这三个LED为GPIO低电平点亮
三颗LED分别接到了AT32F423的PD13、PD14和PD15
打开图形化配置工具AT32 Work Bench,选择正确的MCU系列和具体的型号(默认已经是AT32F423VCT7,正是开发板上使用的主芯片,因此直接使用即可)。
新建打开之后界面非常清晰,一目了然,可以快速找到需要想要进行的配置或者操作,上面的一栏文件、语言以及生成代码的功能,快捷切换语言功能;下面行则是选择需要配置的大模块,包括Pin的布局和配置、时钟配置和代码预览等;左侧一列则是具体的配置对象,如外设的ADC、Timer、GPIO等。
先将设计文件保存
这是第一个工程,就取名问hello_artery。
LED的控制主要是将GPIO设置为输出,从右侧的Pin布局中可以看到,当前是未进行任何配置的状态,引脚均未使用,显示为灰色状态。当有引脚被配置未对应的功能时,则会变成绿色,或者黄色(未配置模式)。
在Pin布局图中,找到三个LED对应的引脚,PD13、PD14和PD15,然后左键点击,在弹出选项中选择GPIO_Output
此时引脚颜色状态就变成绿色了。
在中间一列的GPIO模式和配置中,点击选择其中具体的一个GPIO,可以在下方的输出电平、GPIO类型、上下拉类型、GPIO模式、驱动能力等进行相应的初始化配置,其中输出电平改成输出高电平,因为LED电路设计上是低电平点亮,而标签则填入对应的LED名称。
在DEBUG外设中,调试接口选择SWD,
此时PA113和PA14两个引脚被配置为仿真调试接口。
保存文件,此时可以在代码预览中看到对应修改之后,所有的初始代码了
其中包括:main.c、at32f423_wk_config.c初始化配置、at32f423_wk_config.h、at32f423_int.c终端处理、at32f423_int.h、at32f423_conf.h
点击上方“生成代码”按钮,或者使用快捷键Ctrl+G
会出现如下界面,需要进行相应的配置。首先选择好项目名称和项目保存的位置。
然后在工具链/IDE中,因为使用AT32 IDE,所以对应选择即可。这里也可以看到,该图形化配置工具可以生成eclipse_gcc版本,IAR对各版本,以及MDK的V4和V5版本的工程。支持还是比较丰富的。
另外,此处最好将“重新生成代码时保留用户代码”单选框勾上,以确保下次进行配置更改,重新生成代码时,自己些的用户代码部分不会被覆盖或者删除,要不然很容易哭……
然后在MCU固件包中,如果首次使用,固件包是还没有,为空的,需要手动指定一个,之前已经从官网下载的话,点击浏览,直接选择zip压缩包或者解压之后的文件夹路径,或者点击左侧下载最新版本按钮也可以下载。
选择好固件包之后,最好勾选“复制库文件到项目文件夹”单选框,以便于将库文件跟随工程一起拷贝一份,避免出现不必要的麻烦或者问题。
点击确定按钮,开始在选择的工程文件夹生成工程和代码了。
也可以在生成代码时,选择点击“打开项目”按钮,这时就会自动调用打开前面选择的IDE打开这个工程了。
AT32 IDE启动中……还挺酷的……
第一次打开会要求选择一个workspace,这里选择了一个code代码公共路径。
进入之后,选择“Import Projects...”打开导入工程
选择“Exiting Projects into Workspace”
此时点击“Browse...”
打开刚才AT32 Work Bench 生成的项目工程所在路径
就可以在Projects列表中看到工程了。
点击“Finish”导入,即可在IDE中看到该工程。
点击左上角的Build按钮即可启动编译并生成目标文件
在Console中输出编译结果,包括目标文件信息,如代码的各部分占用空间
代码准备好,下面就可以进行运行或者调试了。先从Run下拉菜单中点击Debug Configuration...
从弹出的框中,双击GDB AT-Link Debugging,就会自动生成工程同名的debugging配置
点开可以查看细节,一般使用默认即可
此时从左上角可以选择Run或者Debug方式。
其中Run为运行模式,Debug则为调试方式,可以有下方的重启、单步,跳出等调试按钮可以使用,Run模式则没有(不可用)。
下载成功Console打印相应信息。
此时,板子上的三颗LED灯全部熄灭。
接下来为了让LED亮起来并且闪烁,开始研究代码部分了。点开main文件找到main函数位置,可以看到程序只做了启动并初始化,包括GPIO,然后进入while循环,也就是说,我们初始化GPIO,并且让LED启动之后就熄灭了,所以看到LED都没有亮起。
顺便可以看到生成的代码,我们自己些的就可以在下面这种add user code begin和add user code end之间添加,以避免下次使用AT32 Work Bench重新生成代码的时候,自己添加的代码被删除或者改掉了。
接下来可以设计一个LED翻转的简单演示功能,即周期性亮灭LED。
首先需要添加一个延时功能,于是想到了systick,且可以用其中断功能,在中断中翻转LED。首先定义systick的中断周期为1mS,以及中断累加周期值为200mS。
在main文件的如下位置添加如下systick的中段处理函数。并在中断中,每200mS翻转LED2,每400mS翻转LED3,每800mS翻转LED4.
而在main函数中需要添加systick的配置操作,同样是要在用户代码添加区域。
接着在中断处理文件中。
同样是在用户代码区域添加systick的中断处理函数SysTick_Handler。
注意别忘记外部函数声明
编译
下载运行,即可看到LED以不同频率闪烁的效果了。
|