DA输出很简单的.
void Dac_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB1ENR|=1<<29; //使能DAC时钟
GPIOA->CRL&=0XFFF0FFFF;
GPIOA->CRL|=0X00030000;//PA4 推挽输出
GPIOA->ODR|=1<<4; //PA4 输出高
DAC->CR|=1<<0;//使能DAC1
DAC->CR|=1<<1;//DAC1输出缓存使能 BOFF1=1
DAC->CR|=0<<2;//不使用触发功能 TEN1=0
DAC->CR|=0<<3;//DAC TIM6 TRGO,不过要TEN1=1才行
DAC->CR|=0<<6;//不使用波形发生
DAC->CR|=0<<8;//屏蔽、幅值设置
DAC->CR|=0<<12;//DAC1 DMA不使能
DAC->DHR12R1=0;
}
然后在main函数:
int main(void)
{
u8 dir=0,t;
u16 i=0;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);//延时初始化
uart_init(72,9600); //串口1初始化
Dac_Init();
//LED_Init(); //LED初始化
//KEY_Init(); //按键初始化
//LCD_Init(); //TFTLCD液晶初始化
while(1)
{
delay_us(1);
DAC->DHR12R1=i;
if(dir==0)i++;
else i--;
if(i>=4095)
{
dir=1;
t++;
}else if(i==0)dir=0;
if(t>100)
{
t=0;
printf("50 circlenr");
}
}
}
DA输出很简单的.
void Dac_Init(void)
{
RCC->APB2ENR|=1<<2; //使能PORTA时钟
RCC->APB1ENR|=1<<29; //使能DAC时钟
GPIOA->CRL&=0XFFF0FFFF;
GPIOA->CRL|=0X00030000;//PA4 推挽输出
GPIOA->ODR|=1<<4; //PA4 输出高
DAC->CR|=1<<0;//使能DAC1
DAC->CR|=1<<1;//DAC1输出缓存使能 BOFF1=1
DAC->CR|=0<<2;//不使用触发功能 TEN1=0
DAC->CR|=0<<3;//DAC TIM6 TRGO,不过要TEN1=1才行
DAC->CR|=0<<6;//不使用波形发生
DAC->CR|=0<<8;//屏蔽、幅值设置
DAC->CR|=0<<12;//DAC1 DMA不使能
DAC->DHR12R1=0;
}
然后在main函数:
int main(void)
{
u8 dir=0,t;
u16 i=0;
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72);//延时初始化
uart_init(72,9600); //串口1初始化
Dac_Init();
//LED_Init(); //LED初始化
//KEY_Init(); //按键初始化
//LCD_Init(); //TFTLCD液晶初始化
while(1)
{
delay_us(1);
DAC->DHR12R1=i;
if(dir==0)i++;
else i--;
if(i>=4095)
{
dir=1;
t++;
}else if(i==0)dir=0;
if(t>100)
{
t=0;
printf("50 circlenr");
}
}
}
举报