图4 LED控制函数接口
在 AMetal 中,所有通用接口均以“am_” 开头,紧接着是操作对象的名字。此处对于LED 控制接口来说,所有接口都应该以“am_led_” 为前缀。
在LED的控制中,AMetal 提供了操作 GPIO 的标准接口函数,所有 GPIO 的标准接口函数原型位于ametalinte
RFaceam_gpio.h 文件中,其中包括一些 GPIO 相关的宏定义以及通用 GPIO 接口的声明。
AMetal提供了:
int am_led_set (int led_id, am_bool_t state)
int am_led_toggle (int led_id)
int am_led_on (int led_id)
int am_led_off (int led_id)
共4个函数
在 AMetal 中,通用接口的第一个参数表示要操作的具体对象。显然,一个系统可能有多个 LED,为了确定操作的 LED,最简单的方法是为每个 LED 分配一个唯一编号,即 ID 号,然后通过 ID 号确定需要操作的 LED。ID 号是一个从 0 开始的整数,其类型为 int,基于此,所有接口的第一个参数定义为 int 类型的 led_id。对于 am_led_set 接口来说,除使用 led_id 确定需要控制的 LED 外,还需要使用一个参数区分是点亮 LED 还是熄灭 LED。由于是二选一的操作,因此该参数的类型使用布尔类型:am_bool_t。当值为真(AM_TRUE)时,则点亮 LED;当值为假(AM_FALSE)时,则熄灭 LED。
基于此,包含参数的 am_led_set 接口函数原型为(还未定义返回值):
am_led_set(int led_id, am_bool_tstate)
对于am_led_on、am_led_off和 am_led_toggle 接口来说, 它们的职责单一, 仅仅需要指定控制的 LED, 即可完成点亮、熄灭或翻转操作,无需额外的其它参数。因此对于这类接口,参数仅仅只需要 led_id。
对于用户来说,调用通用接口后,应该可以获取本次执行的结果,成功还是失败,或一些其它的有用信息。比如,当调用接口时,如果指定的 led_id 超过有效范围时,由于没有与 led_id 对应的 LED 设备,操作必定会失败,此时必须返回错误,告知用户操作失败,且失败的原因是 led_id 不在有效范围内,无与之对应的 LED 设备。
在 AMetal 中,通过返回值返回接口执行的结果,其类型为 int,返回值的含义为:若返回值为 AM_OK,则表示操作成功;若返回值为负数,则表示操作失败,失败原因可根据返回值,查找 am_errno.h 文件中定义的宏,根据宏的含义确定失败的原因;若返回值为正数,其含义与具体接口相关,由具体
接口定义,无特殊说明时,表明不会返回正数。
运行
至此,控制 LED 闪烁的应用程序介绍完毕,下一步即可对该程序进行编译并下载到硬件平台中运行了。
eMiniboard板载MM32-LINK OB,用户只需插上一根USB即可对MCU进行
仿真调试,也可以提供供电,用户操作方便快捷,免去熟悉各种接口的困扰。
图5 下载程序
程序正确下载完成后,复位MCU,看到 LED0 灯不停地闪烁,说明程序下载成功。同时如果我们有接上UART模块,在MCU复位后可以看到输出字符串“Start up successful!
”,表示复位执行程序正常。
我们将在下一章节和大家一起学习基于AMetal的MM32 MCU串口收发实现方式,敬请期待!
`
0