STM32
直播中

俞丽

7年用户 194经验值
私信 关注
[问答]

请问怎样将串口输入的数据进行DA转换后输出?

最近刚开始学习STM32F103,请问怎样将串口输入的数据进行DA转换后输出? 均使用芯片上自带的串口和DA转换。万分感谢

回帖(5)

李荣

2019-10-24 08:02:44
先做好DA输出,其他的就简单了.
举报

刘双喜

2019-10-24 08:12:51
可是问题就在于找不到介绍STM32F103ZET6关于DA方面应用的资料啊
举报

李明聪

2019-10-24 08:25:06
可有什么这方面的好书?原子哥介绍下
举报

王竹

2019-10-24 08:37:24
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");  
}
}
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分