管理员
  
- 积分
- 165371
- 金钱
- 165371
- 注册时间
- 2010-12-1
- 在线时间
- 2110 小时
|
发表于 2012-1-30 09:12:47
|
显示全部楼层
回复【4楼】sosharelo:
---------------------------------
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 circle\n\r");
}
}
} |
|