新手上路
- 积分
- 38
- 金钱
- 38
- 注册时间
- 2019-7-7
- 在线时间
- 9 小时
|
1金钱
我的stm32f407 pa4 和adc 引脚上明明有dac的电压输出(这里我用adc也可以测出dac输出的电压也就是 引脚pa4和adc没有问题) 也就是我lcd上面也显示了dac的电压(这里我想弄出一个三角波所以dac显示的电压是从零到两点多然后从两点多到零 我确实使得dac输出是这个样子)但是出现了一个问题就是为什么用示波器却什么也测不出来啊现象就是一条直线和开机时没什么两样。
下面是main.c的代码
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "dac.h"
#include "key.h"
//ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å êμÑé21
//DACêμÑé-¿aoˉêy°æ±¾
//¼¼êõÖ§3Ö£owww.openedv.com
//ìÔ±|μêÆì£ohttp://eboard.taobao.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
//×÷ÕߣoÕyμãÔ-×ó @ALIENTEK
int main(void)
{
u16 adcx;
float temp;
u8 t=0;
u16 dacval=0;
u8 key;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏè¼¶·Ö×é2
delay_init(168); //3õê¼»ˉÑóê±oˉêy
uart_init(115200); //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
LED_Init(); //3õê¼»ˉLED
LCD_Init(); //LCD3õê¼»ˉ
Adc_Init(); //adc3õê¼»ˉ
KEY_Init(); //°′¼ü3õê¼»ˉ
Dac1_Init(); //DACí¨μà13õê¼»ˉ
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"Explorer STM32F4");
LCD_ShowString(30,70,200,16,16,"DAC TEST");
LCD_ShowString(30,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(30,110,200,16,16,"2014/5/6");
LCD_ShowString(30,130,200,16,16,"WK_UP:+ KEY1:-");
POINT_COLOR=BLUE;//éèÖÃ×ÖìåÎaà¶é«
LCD_ShowString(30,150,200,16,16,"DAC VAL:");
LCD_ShowString(30,170,200,16,16,"DAC VOL:0.000V");
LCD_ShowString(30,190,200,16,16,"ADC VOL:0.000V");
DAC_SetChannel1Data(DAC_Align_12b_R,dacval);//3õê¼ÖμÎa0
while(1)
{
while(dacval<3600)
{ dacval+=50;
DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//éèÖÃDACÖμ
adcx=DAC_GetDataOutputValue(DAC_Channel_1);//¶áè¡Ç°ÃæéèÖÃDACμÄÖμ
LCD_ShowxNum(94,150,adcx,4,16,0); //ÏÔê¾DAC¼Ä′æÆ÷Öμ
temp=(float)adcx*(3.3/4096); //μÃμ½DACμçÑ1Öμ
adcx=temp;
LCD_ShowxNum(94,170,temp,1,16,0); //ÏÔê¾μçÑ1ÖμÕûêy2¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(110,170,temp,3,16,0X80); //ÏÔê¾μçÑ1ÖμμÄD¡êy2¿·Ö
adcx=Get_Adc_Average(ADC_Channel_5,10); //μÃμ½ADC×a»»Öμ
temp=(float)adcx*(3.3/4096); //μÃμ½ADCμçÑ1Öμ
adcx=temp;
LCD_ShowxNum(94,190,temp,1,16,0); //ÏÔê¾μçÑ1ÖμÕûêy2¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(110,190,temp,3,16,0X80); //ÏÔê¾μçÑ1ÖμμÄD¡êy2¿·Ö
LED0=!LED0;
delay_us(1);
}
while(dacval>0)
{ dacval-=50;
DAC_SetChannel1Data(DAC_Align_12b_R, dacval);//éèÖÃDACÖμ
adcx=DAC_GetDataOutputValue(DAC_Channel_1);//¶áè¡Ç°ÃæéèÖÃDACμÄÖμ
LCD_ShowxNum(94,150,adcx,4,16,0); //ÏÔê¾DAC¼Ä′æÆ÷Öμ
temp=(float)adcx*(3.3/4096); //μÃμ½DACμçÑ1Öμ
adcx=temp;
LCD_ShowxNum(94,170,temp,1,16,0); //ÏÔê¾μçÑ1ÖμÕûêy2¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(110,170,temp,3,16,0X80); //ÏÔê¾μçÑ1ÖμμÄD¡êy2¿·Ö
adcx=Get_Adc_Average(ADC_Channel_5,10); //μÃμ½ADC×a»»Öμ
temp=(float)adcx*(3.3/4096); //μÃμ½ADCμçÑ1Öμ
adcx=temp;
LCD_ShowxNum(94,190,temp,1,16,0); //ÏÔê¾μçÑ1ÖμÕûêy2¿·Ö
temp-=adcx;
temp*=1000;
LCD_ShowxNum(110,190,temp,3,16,0X80); //ÏÔê¾μçÑ1ÖμμÄD¡êy2¿·Ö
LED0=!LED0;
delay_us(1);
}
}
}
|
|