介绍关于DAC初始化、开始、停止、设置、获取当前输出值、关闭等功能所调用的一些抽象函数。

API列表

函数名称 功能描述
hal_dac_init 初始化指定DAC
hal_dac_start 开始DAC输出
hal_dac_stop 停止DAC输出
hal_dac_set_value 设置DAC输出值
hal_dac_get_value 获取当前DAC输出值
hal_dac_finalize 关闭指定DAC

hal_dac_init

定义描述
定义 描述
函数原型 int32_t hal_dac_init(dac_dev_t *dac)
描述 初始化指定DAC
参数 dac:DAC设备描述
返回值 返回成功或失败,返回0表示DAC初始化成功,非0表示失败

调用示例

具体请参见使用示例

hal_dac_start

定义描述
定义 描述
函数原型 int32_t hal_dac_start(dac_dev_t *dac, uint32_t channel)
描述 开始DAC输出
参数
  • dac:DAC设备描述
  • channel:输出通道号
返回值 返回成功或失败,返回0表示DAC开始输出成功,非0表示失败

调用示例

具体请参见使用示例

hal_dac_stop

定义描述
定义 描述
函数原型 int32_t hal_dac_stop(dac_dev_t *dac, uint32_t channel)
描述 停止DAC输出
参数
  • dac:DAC设备描述
  • channel:输出通道号
返回值 返回成功或失败,返回0表示DAC停止输出成功,非0表示失败

调用示例

具体请参见使用示例

hal_dac_set_value

定义描述
定义 描述
函数原型 int32_t hal_dac_set_value(dac_dev_t *dac, uint32_t channel, uint32_t data)
描述 设置DAC输出值
参数
  • dac:DAC设备描述
  • channel:输出通道号
  • data:输出值
返回值 返回成功或失败,返回0表示DAC输出值设定成功,非0表示失败

调用示例

具体请参见使用示例

hal_dac_get_value

定义描述
定义 描述
函数原型 int32_t hal_dac_get_value(dac_dev_t *dac, uint32_t channel)
描述 获取当前DAC输出值
参数
  • dac:DAC设备描述
  • channel:输出通道号
返回值 返回DAC输出值

调用示例

具体请参见使用示例

hal_dac_finalize

定义描述
定义 描述
函数原型 int32_t hal_dac_finalize(dac_dev_t *dac)
描述 关闭指定DAC
参数 adc:ADC设备描述
返回值 返回成功或失败,返回0表示DAC关闭成功,非0表示失败

调用示例

具体请参见使用示例

dac_dev_t数据结构

typedef struct {
    uint8_t port;   /* dac port */
    void   *priv;   /* priv data */
} dac_dev_t;

使用示例

#include <aos/hal/dac.h>

#define DAC1_PORT_NUM 1
#define DAC1_CHANNEL_NUM 1

/* define dev */
dac_dev_t dac1;

int application_start(int argc, char *argv[])
{
    int ret   = -1;
    int value = 0;
    static int count = 0;

    /* dac port set */
    dac1.port = DAC1_PORT_NUM;

    /* init dac1 with the given settings */
    ret = hal_dac_init(&dac1);
    if (ret != 0) {
        printf("dac1 init error !\n");
        return -1;
    }

    value = 10;

    ret = hal_dac_set_value(&dac1, DAC1_CHANNEL_NUM, value);
    if (ret != 0) {
        printf("dac1 set value error !\n");
    }

    /* start dac output */
    ret = hal_dac_start(&dac1, DAC1_CHANNEL_NUM);
    if (ret != 0) {
        printf("dac1 start error !\n");
    }

    while(1) {
        if (count == 10) {
            break;
        }

        /* sleep 500ms */
        aos_msleep(500);

        count++;
    };
    /* finalize dac1 */
    hal_dac_finalize(&dac1);
}
说明
  • port为逻辑端口号,其与物理端口号的对应关系见具体的对接实现。
  • 移植前,请新建hal_dac_xxmcu.chal_dac_xxmcu.h的文件,并将这两个文件放到platform/mcu/xxmcu/hal目录下。在hal_dac_xxmcu.c中实现所需要的hal函数,hal_dac_xxmcu.h中放置相关宏定义。具体请参见platform/mcu/stm32l4xx_cube/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dac_ex.c