RISC-V_GD32VF103-DAC 数模转换

DAC数模转换,输入数字端口输出对应的电压,范围 0x000 - 0xFFF。

选择引脚 PA4。按键按下一次增加电压,循环增加,万用表测量即可。

dac.c

#include "dac.h"
#include "gd32vf103.h"
#include "gd32vf103_libopt.h"


// ************************************************************************************************************** //
//DAC 初始化
void DAC0_Init()
{
	rcu_periph_clock_enable(RCU_GPIOA); //开启GPIOA时钟
	rcu_periph_clock_enable(RCU_DAC);   //开启DAC时钟
	gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_50MHZ, GPIO_PIN_4); //初始化引脚 PA4

	dac_deinit();
	//dac_trigger_source_config(DAC0, DAC_TRIGGER_EXTI_9); //DAC触发源选择 \\----不使用
	dac_trigger_disable(DAC0); //不使能触发模式
	dac_wave_mode_config(DAC0, DAC_WAVE_DISABLE); //DAC噪声波模式选择
	//dac_wave_mode_config(DAC0, DAC_WAVE_MODE_LFSR); //DAC噪声波模式选择  \\____不使用
	//dac_lfsr_noise_config(DAC0, DAC_LFSR_BITS11_0); //DAC LFSR模式设置  //~~~~不使用
	dac_output_buffer_disable(DAC0); //DAC输出缓冲区使能

	dac_data_set(DAC0, DAC_ALIGN_12B_R, 0); //设置DAC0 数据
	dac_enable(DAC0);
}

dac.h

#ifndef  __DAC_H__
#define  __DAC_H__
#include "gd32vf103.h"
#include "systick.h"




// ************************************************************************************************************** //
void DAC0_Init(void);



#endif

main.c

#include "gd32vf103.h"
#include "gd32vf103c_start.h"
#include "systick.h"
#include <stdio.h>
#include <string.h>

#include "led.h"
#include "key.h"
#include "usart0.h"
#include "dac.h"


// ************************************************************************************************************* //
//主函数
int main(void)
{
	uint16_t Value = 0;
	uint8_t  key = 0;

	eclic_global_interrupt_enable();
	eclic_priority_group_set(ECLIC_PRIGROUP_LEVEL3_PRIO1);

	LED_Init();    //LED灯初始化
	KEY_Init();    //KEY按键初始化
	USART0_Init(); //USART0初始化
	DAC0_Init();   //DAC0初始化

	printf("串口测试 USART TEST 0123456789 \n\r");
    while(1)
    {
    	key = KEY_Scan();
    	if(key == 1)
    	{
    		LED0_T;
    		Value+=0x100;if(Value > 0xfff) {Value = 0x000;}
    		dac_data_set(DAC0, DAC_ALIGN_12B_R, Value); //设置DAC0 数据
    	}
    	delay_1ms(100);
    }
}

个人见解,感谢阅读。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值