OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8210|回复: 2

自己写的一个DAC程序 不知道哪里错了 不能正常运行

[复制链接]

181

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1055
金钱
1055
注册时间
2012-8-26
在线时间
52 小时
发表于 2012-9-25 20:18:11 | 显示全部楼层 |阅读模式
Dac_Init()
{
//先初始化IO口
  RCC->APB2ENR|=7<<2;    //使能PORTA口时钟 
GPIOA->CRL&=0XFF00Fffff;//
GPIOA->CRL|=0X00330000;
 
RCC->APB1ENR|=1<<29;    //时钟使能  
RCC->APB1RSTR|=1<<29;   //复位
delay_ms(1);
RCC->APB1RSTR&=~(1<<29);//复位结束    

DAC->CR=0;

DAC->CR|=0<<8;
DAC->CR|=0<<6;
DAC->CR|=7<<3;//软件触发
DAC->CR|=1<<2;//使能
DAC->CR|=1<<1;//缓存
DAC->CR|=1<<0;//使能



}



int main(void)
{
  u16 led0pwmval=0;
u8 dir=1;
  Stm32_Clock_Init(9); //系统时钟设置
delay_init(72);     //延时初始化
uart_init(72,9600);  //串口初始化 
LED_Init();
LCD_Init();
POINT_COLOR=BLUE;   //初始化与LED连接的硬件接口
    Dac_Init();
while(1)
{  


  DAC->DHR12R1++;
LCD_ShowNum(156,190,DAC->DOR1,6,16);
LCD_ShowNum(156,170,DAC->DHR12R1,6,16);   
}  
}

按照理论上来说他会输出锯齿波吧,而且输出的数据都会在LCD上显示,可是现在显示的是0,输出引脚也没有反应




为了雅典娜?为了爱与正义
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

181

主题

311

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1055
金钱
1055
注册时间
2012-8-26
在线时间
52 小时
 楼主| 发表于 2012-9-25 20:30:30 | 显示全部楼层
原来芯片本身没有DAC的功能  怪不得本天才测试半天都没效果
为了雅典娜?为了爱与正义
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-9-25 21:24:01 | 显示全部楼层
给你个能用的:
#include "dac.h"
//////////////////////////////////////////////////////////////////////////////////  
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//DAC 代码    
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/8
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved   
//////////////////////////////////////////////////////////////////////////////////
//DAC通道1输出初始化
void Dac1_Init(void)
{
RCC->APB2ENR|=1<<2;    //使能PORTA时钟   
RCC->APB1ENR|=1<<29;   //使能DAC时钟   
     
GPIOA->CRL&=0XFFF0FFFF; 
GPIOA->CRL|=0X00000000;//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;
}
//设置通道1输出电压
//vol:0~3300,代表0~3.3V
void Dac1_Set_Vol(u16 vol)
{
float temp=vol;
temp/=1000;
temp=temp*4096/3.3;
DAC->DHR12R1=temp;
}
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-20 10:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表