求教 while循环

[复制链接]
2260|6
 楼主| pinghpu 发表于 2013-4-16 18:00 | 显示全部楼层 |阅读模式
      do
      {
        id=ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC);//转换结束标志位
      }while(!id);

经常在这个while里挑不出来,会是什么原因呢
LDTEST 发表于 2013-4-17 09:55 | 显示全部楼层
检查下ADC配置是否正确
readdai 发表于 2013-4-17 11:05 | 显示全部楼层
先按楼上排查,然后类似循环最好做个超时自动退出功能。
 楼主| pinghpu 发表于 2013-4-18 09:45 | 显示全部楼层
LDTEST 发表于 2013-4-17 09:55
检查下ADC配置是否正确

ADC的时钟频率默认值是多少?
对adc采样频率的设置怎么计算呢?
 楼主| pinghpu 发表于 2013-4-18 11:05 | 显示全部楼层
LDTEST 发表于 2013-4-17 09:55
检查下ADC配置是否正确

  ADC_DeInit(ADC1);//将外设ADC1 的全部寄存器重设为缺省值
  
  ADC_InitStruct.ADC_Mode=ADC_Mode_Independent;//独立工作模式
  ADC_InitStruct.ADC_DataAlign=ADC_DataAlign_Right;//数据右对齐
  ADC_InitStruct.ADC_ContinuousConvMode=DISABLE;//不是连续转化
  ADC_InitStruct.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;//触发方式为软件触发
  ADC_InitStruct.ADC_NbrOfChannel=1;//选择ADC通道数目为1
  ADC_InitStruct.ADC_ScanConvMode=DISABLE;//单通道转换
  
  ADC_Init(ADC1,&ADC_InitStruct);
  
  ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_1Cycles5);//设置ADC的转换通道和采样时间
  RCC_ADCCLKConfig(RCC_PCLK2_Div6);
  
  ADC_Cmd(ADC1,ENABLE);//重置指定的ADC1校准寄存器
  
  ADC_ResetCalibration(ADC1);//获取ADC1充值校准寄存器的状态,直到校准寄存器重设完成
 楼主| pinghpu 发表于 2013-4-18 15:00 | 显示全部楼层
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1,ENABLE);
找到原因了,没有打卡adc时钟。
cjhk 发表于 2013-4-18 18:57 | 显示全部楼层
问题解决就好   还是21ic好  多逛21ic  没有解决不了的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

30

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部