OpenEdv-开源电子网

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

参考了原子哥2013年4月1号录制的视频,自己做的ADC转换老显示为0

[复制链接]

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-4-24
在线时间
0 小时
发表于 2014-7-1 10:07:22 | 显示全部楼层 |阅读模式
5金钱
[mw_shl_code=c,true]结合LCD的显示,老是显示为0.困扰很久。[/mw_shl_code] [mw_shl_code=c,true]下面是我按照原子哥,在KEIL 5 下面的ADC.C的编程,各位大神,请指点。[/mw_shl_code] [mw_shl_code=c,true] [/mw_shl_code] [mw_shl_code=c,true]#include "stm32f10x_adc.h" #include "GPIO_STM32F10x.h" #include "stm32f10x_rcc.h" #include "delay.h" #include "LCD12864.h" #include "adc.h" #include "stm32F10x_dma.h" //#include "stm32F10x_adc.h" #include "ADC22.h" #define ad_port1 GPIOA #define ad_pin1 1 void Adc_Init(void) { ADC_InitTypeDef ADC_InitStructure; ADC1_GPIO_Config(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE); RCC_ADCCLKConfig(RCC_PCLK2_Div8); ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode = DISABLE ; ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); ADC_DMACmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1)) ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1)); } void ADC1_GPIO_Config(void) 设置AD转换的端口。 { GPIO_PortClock(ad_port1,ENABLE); GPIO_PinConfigure(ad_port1,ad_pin1,GPIO_IN_ANALOG,GPIO_MODE_INPUT); } u16 Get_Adc(u8 ch) 获取每次的ADC转换值 { ADC_RegularChannelConfig(ADC1,ch,1,ADC_SampleTime_239Cycles5); ADC_SoftwareStartConvCmd(ADC1,ENABLE); while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC)) return ADC_GetConversionValue(ADC1); } u16 Get_ADC_Average(u8 ch,u8 times) 取平均值,提高精度,取得次数根据自己设置times { u32 temp_val=0; u8 t; for(t=0;t<times;t++) { temp_val+=Get_Adc(ch); delay_ms(5); } temp_val=temp_val/times; return temp_val; } void show_adc(void)             显示ADC的值在LCD上面,显示为0 。 { u16 adcx1,adcx2,adcVal; float temp; //Adc_Init(); /* Show A/D conversion bargraph */ adcx1=Get_ADC_Average(ADC_Channel_1,10); lcd12864_showLineEx(0,0,16,"%d6 ",adcx1); lcd12864_refreshEx(0); temp=(float)adcx1*(3.3/4096); adcx2=temp; lcd12864_showLineEx(0,1,16,"%d7 ",adcx2); lcd12864_refreshEx(1); } [/mw_shl_code]

最佳答案

查看完整内容[请看2#楼]

等待adc转换结束的那条语句,后面少了个“;” 应该是还没转换完就return了。
No weapon formed against me shall prosper and every tongue that shall rise against thee in judgment thou shalt condemn。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-7-1 10:07:23 | 显示全部楼层
等待adc转换结束的那条语句,后面少了个“;”
应该是还没转换完就return了。
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-4-24
在线时间
0 小时
 楼主| 发表于 2014-7-1 10:37:27 | 显示全部楼层
回复【2楼】西门吹雪:
---------------------------------
谢谢老师的回复。
但是加了之后报这个错
user\adc.c(50): error:  #7: unrecognized token         while(!ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC));
No weapon formed against me shall prosper and every tongue that shall rise against thee in judgment thou shalt condemn。
回复

使用道具 举报

8

主题

222

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
275
金钱
275
注册时间
2013-11-21
在线时间
0 小时
发表于 2014-7-1 10:44:33 | 显示全部楼层
回复【3楼】kingsun:
---------------------------------
是不是有不可识别的字符,你再看看。
试试把那一行删掉,再输入一次
回复

使用道具 举报

3

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2014-4-24
在线时间
0 小时
 楼主| 发表于 2014-7-1 11:05:10 | 显示全部楼层
回复【2楼】西门吹雪:
---------------------------------
谢谢老师    我又试了几遍  终于没报错。
No weapon formed against me shall prosper and every tongue that shall rise against thee in judgment thou shalt condemn。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 20:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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