中级会员
 
- 积分
- 309
- 金钱
- 309
- 注册时间
- 2016-5-20
- 在线时间
- 45 小时
|
1金钱
#include "stm32f10x.h"
#include "dac.h"
#include "delay.h"
void Dac_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
DAC_InitTypeDef DAC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //ê1ÄüGPIOAê±Öó
RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC,ENABLE); //ê1ÄüDACê±Öó
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AIN;
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure); //3õê¼»ˉGPIOA3éÔ±±äá¿
DAC_InitStructure.DAC_Trigger=DAC_Trigger_None; //2»ê1óÃ′¥·¢1|Äü£¬TEN1=0
DAC_InitStructure.DAC_WaveGeneration=DAC_WaveGeneration_None; //2»ê1óÃ2¨Dη¢éú
DAC_InitStructure.DAC_LFSRUnmask_TriangleAmplitude=DAC_LFSRUnmask_Bit0; //Æá±Î·ùÖμéèÖÃ
DAC_InitStructure.DAC_OutputBuffer=DAC_OutputBuffer_Disable; //DAC1êä3ö»o′æ1رÕ£¬BOFF1=1
DAC_Init(DAC_Channel_1,&DAC_InitStructure); //3õê¼»ˉDACí¨μà13éÔ±±äá¿
DAC_Cmd(DAC_Channel_1,ENABLE); //ê1ÄüDACí¨μà1
DAC_SetChannel1Data(DAC_Align_12b_R,0); //12λóò¶ÔÆë¸ñê½£¬éèÖÃDACμÄÖμ
}
void Dac1_set_vol(void) //éèÖÃêä3öμçÑ1Öμ
{
float vol,temp;
bool a;
if(vol>=3.2) a=1;
if(vol==0) a=0;
if(a==0)
{
for(vol=0;vol<3.3;vol+=0.1)
{
temp=vol*4096/3.3;
DAC_SetChannel1Data(DAC_Align_12b_R,temp);
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
GPIO_SetBits(GPIOE,GPIO_Pin_5);
delay_ms(1000);
}
}
if(a==1)
{
for(vol=3.3;vol>0;vol-=0.1)
{
temp=vol*4096/3.3;
DAC_SetChannel1Data(DAC_Align_12b_R,temp);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
GPIO_ResetBits(GPIOE,GPIO_Pin_5);
delay_ms(1000);
}
}
}
|
|