STM32F407VG 用软件触发的 DAC 转换例程
本 DAC 是数字转换成电压输出,电压范围为 0 到输入参考电压 VREF+.
代码如下:
ynr
STM32F407VGT6
/***************************************************************
//文件: main.c
//作者:
//CPU:
//功能: DAC 转换电压
//日期:
****************************************************************/
#include "stm32f4xx.h"
2012.8.22
#define
#define
#define
#define
unsigned
uchar
uint
unsigned
ulong unsigned
unsigned
ubit
char
short
long
uint
DAC_DATA;
//DAC 要写入的数据
void DAC_Ch1_Config(void);
void DAC1_SET(void);
int main(void)
{
DAC_Ch1_Config();
DAC_DATA=0X05FF;
DAC1_SET();
while(1);
}
//DAC1 配置
//DAC 要写的数据
//写入数据 DAC 转换
/******************************************************************************
*
* 函数名: DAC_Ch1_Config
* 功能 : DAC1 配置
* 输入 : None
* 输出 : None
* 返回 : None
*******************************************************************************
/
void DAC_Ch1_Config(void)
上海美创力罗特维尔电子机械科技有限公司
http://www.rottweil.com.cn
{
钟
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
// 打 开 GPIOA 时
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE);
//打开 DCA 时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//DAC_OUT1=PA.4
//该脚为 AN 模式
/不上拉不下拉
// 以 参 数 初 始 化
GPIOA
DAC_InitStructure.DAC_Trigger = DAC_Trigger_Software ;
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; //只电压输出
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitud= DAC_TriangleAmplitude_2047;
//软件触发
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure);
化 DAC1
DAC_Cmd(DAC_Channel_1, ENABLE);
道
}
DAC_SetChannel1Data(DAC_Align_12b_R, 0x0000);
DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
//分辨力
//使能输出
// 以 参 数 初 始
// 使能 DAC1 通
//写入初始值 0
///软件触发转换
/******************************************************************************
*
* 函数名: DAC1_SET
* 功能 : DAC 数据写入
* 输入 : None
* 输出 : None
* 返回 : None
******************************************************************************/
void DAC1_SET(void)
{
DAC_SetChannel1Data(DAC_Align_12b_R, DAC_DATA );
DAC_SoftwareTriggerCmd(DAC_Channel_1, ENABLE);
//写入数据
//软件触发转换
}
作者:杨年荣
上海美创力罗特维尔电子机械科技有限公司
http://www.rottweil.com.cn
上海美创力罗特维尔电子机械科技有限公司
http://www.rottweil.com.cn