STM32F100C8T6B DAC输出:
有个项目要求:4路控温输出+2路DAC输出。在选择芯片功能的同时,考虑到价格等等因素,
就决定使用STM32F100C8T6B。
在购买芯片之前,就先到网上搜搜看,有关这个芯片的使用情况。结果是一搜,网上也是
议论很多,好多的都是出现没有DAC输出的情况。
现在芯片买回来了,就赶紧测试一番,毕竟这一款芯片,原先没有使用过。看重的就是这款
芯片的价格优势,还有就是具有2路12bit的DAC输出。
结果是按照我原来使用STM32F103VCT6的程序,测试完全正常,在此列出来,跟大家共享。
特别强调的是,芯片的型号是 :STM32F100C8T6B (封装:LQFP-48).
(因为网上议论纷纷的是不带后缀B的没有这个DAC输出的功能,
自己没有购买不带后缀B的芯片,也无法测试,在此声明一下)
配置函数如下:
/****************************************************************************
* 功 能: STM32F100C8T6: DAC初始化函数
*-------------------------------------------------------------------------------------------------------------------------*
* 入口参数: None
* 出口参数: None
****************************************************************************/
void STM32F100_DAC_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitStructure;
//开启GPIOA和DAC的时钟。注意GPIOA的时钟是在APB2,而DAC的时钟则是在APB1
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); //开启虳AC的时钟
//PA.4---DAC1_OUT; PA.5---DAC2_OUT;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DAC_InitStructure.DAC_Trigger = DAC_Trigger_None;//选择DAC的触发输出,当产生波形时可用定时器触发
DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Disable;
DAC_Init(DAC_Channel_1, &DAC_InitStructure); //初始化DAC通道1
DAC_Init(DAC_Channel_2, &DAC_InitStructure); //初始化DAC通道2
DAC_Cmd(DAC_Channel_1, ENABLE); //使能DAC通道1输出
DAC_Cmd(DAC_Channel_2, ENABLE); //使能DAC通道2输出
}
/****************************************************************************
* 功 能: STM32F100C8T6: DAC输出电压函数
*-----------------------------------------------------------------------------------------------------------------------*
* 入口参数: vt-----输出的电压数值
* 出口参数: None
****************************************************************************/
void DAC_Voltage_OutPut(float vt)
{
u16 md;
float mt;
mt=vt*4096/3.3; //DAC参考电压:VDDA=3.3V
md=(float)mt;
DAC_SetChannel1Data(DAC_Align_12b_R,md);
DAC_SetChannel2Data(DAC_Align_12b_R,md);
}
void main(void)
{
SystemInit();
STM32F100_DAC_Init();
DAC_Voltage_OutPut(1.5);
Delay(5000); //延时5s
DAC_Voltage_OutPut(2.4);
while(1) {
}
}
|