5.使用DAVE APP完成你的第一个应用
让我们应用前几章学到的东西,完成一个简单应用。
要完成的应用
设想一个简单的应用:
- 产生一个固定频率的PWM信号
- 在PWM周期结束触发的ISR中翻转一个LED
图形化之,如下:
图1:要完成的应用
需要使用的外设是CCU4(用于定时器功能)、2个IO引脚(一个用于PWM输出,另一个用于翻转LED)和NVIC节点(用于中断功能)。
本练习的目的是学习使用应用构建模块(DAVE APPs)完成应用。
应用构建模块
这些外设对应的APP是:
- PWM APP,用于配置定时器硬件和获取PWM API,以启动PWM。
- DIGITAL_IO APP,用于把IO引脚配置为输出,以及生成翻转LED的API。
- INTERRUPT APP,用于配置NVIC节点。CCU4模块标记了PWM周期结束事件,该NVIC节点与该事件联系起来。
构造应用
a.创建工程
- 创建一个DAVE CE工程,设备选择XMC4500
- 起个名字(例如PWM_Generator)
APP的名字必须符合C变量命名规则。
b.添加APP
- 向工程中添加3种APP
- 完成后,你的工程看起来像这个样子:
图2:必要的APP
c.配置APP
PWM APP
- 双击PWM APP,开始配置它。
a. PWM APP提供3个配置标签页。第一个标签页用于PWM定时器配置,第二个用于定时器事件配置,定时器事件可用于产生中断,第三个用于IO引脚配置,PWM信号将从选定的引脚输出。
b. 在General Settings标签页中,设定PWM APP产生1.5kHz、50%占空比的PWM输出信号。
c. 在Event Settings标签页中,使能周期匹配事件。
d. 在Pin Settings标签页中,配置PWM输出的IO引脚。
APP提供的默认配置通常是足够好的,除非你的应用需要修改其默认配置。 - 前面已经为PWM APP配置了基本特性。现在要设置一个中断节点。一个定时器通道能够产生多个事件。当这些事件与中断线连接时,就能产生中断。所以,现在要把一个PWM定时器事件(例如,定时器周期匹配事件)与一个NVIC节点连接起来:我们从打开Signal Connectivity特性开始。
图3:打开Signal Connectivity - 手动把PWM APP的周期匹配事件连接到NVIC节点,然后保存。
图4:把PWM事件连接到中断节点
INTERRUPT APP
- 把PWM事件连接到中断节点后,就可以配置该NVIC节点的属性了。双击INTERRUPT APP开始配置。你可以根据需要配置中断的优先级和子优先级。给ISR起一个函数名(例如PWM_Event_Handler).该函数最终需要你在某个文件(例如main.c)中完成编写。
图5:PWM中断配置
DIGITAL_IO APP
- PWM和NVIC节点配置好了,现在要配置连接到LED的GPIO了。该GPIO配置为输出,并且在每次PWM中断触发时被翻转。双击DIGITAL_IO APP,设置IO功能引脚。
图6:GPIO配置
d.代码生成
- 现在用于构建的APP都已经被配置了,可以生成源代码库了。生成的库包括API和数据结构,可以被用户的应用代码使用。
图7:从配置的APP生成源代码库
e.应用栈
下图展示了各个库的层级关系,可以帮助你快速开发应用。
图8:生成的代码的应用栈
f.创建一个应用,使用生成的代码库
DAVE在创建工程时就提供了一个范例main.c。你现在可以扩展它,可以通过使用生成的库中的API和数据结构创造你的应用。
图9:使用DAVE APP源代码的用户应用
g.生成用于擦写的二进制文件
在DAVE中,从源代码生成二进制文件(.elf、.hex、.bin)很简单。ARM-GCC工具链和MBS(一个构建框架)就是干这个的。
图10:二进制文件的生成
现在可以把二进制文件烧写到目标板中。详见下一章。