GD32VF103_DAC

前言

GD32VF103_环境配置_GPIO_外部中断
GD32VF103_定时器中断
GD32VF103_串口发送_printf_接收中断_DMA
我们前三节写了GPIO, EXTI, TIMER, USART的用例, 本节写DAC的用例, 默认 PA4-DAC0, PA5-DAC1, 我们程序里面默认DAC0输出3.3V的1/2, DAC1输出为3.3V的1/4.

新建工程

打开NucleiStudio:

  • File -> New -> C/C++ Project, 选择C Managed Build
  • 选择GigaDevice RISC-V Project, 填入工程名
  • MCU默认暂时只有GD32VF103, 然后Demo也没法选, 只有Running_LED, 不变
  • 下一步, 完成.

DAC

main.c代码如下:

#include "gd32vf103.h"

//PA4 -- DAC0
//PA5 -- DAC1
#define DAC0_OUT_VAL (0x7FF0)	//3.3 * 1/2
#define DAC1_OUT_VAL (0x3FF0)	//3.3 * 1/4

int main(void) {
    rcu_periph_clock_enable(RCU_GPIOA);
    rcu_periph_clock_enable(RCU_DAC);

    /* once enabled the DAC, the corresponding GPIO pin 
    is connected to the DAC converter automatically */
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4);
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_5);

    dac_deinit();

    dac_trigger_disable(DAC0);
    dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE);
    dac_output_buffer_enable(DAC0);

    dac_trigger_disable(DAC1);
    dac_wave_mode_config(DAC1, DAC_WAVE_DISABLE);
    dac_output_buffer_enable(DAC1);

    dac_enable(DAC0);
    dac_data_set(DAC0, DAC_ALIGN_12B_L, DAC0_OUT_VAL);

    dac_enable(DAC1);
    dac_data_set(DAC1, DAC_ALIGN_12B_L, DAC1_OUT_VAL);

	while(1) {

	}
	return 0;
}

代码中 DAC_ALIGN_12B_L 靠左12bit对齐, 所以#define DAC0_OUT_VAL (0x7FF0) 就代表了一半输出.
调试运行, 拿出万用表, 测量AVDD电压3.31V, PA4电压为1.65V, PA5电压为0.82V, 符合预期.

工程代码

https://download.csdn.net/download/weifengdq/11947183

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值