5355|5

4

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

stm32 的一个AD采集电阻的程序软件仿真没问题,硬件仿真就什么响应也没有 [复制链接]

int main(void)
{
#ifdef DEBUG
   debug();
#endif
    u32 ConversionValue;
   RCC_Configuration();    //使能外设时钟
GPIO_Configuration();
NVIC_Configuration();
//SMG_Init();
USART_Configuration(15200);
ADC_Configuration();
//  GPIO_Configuration();   //初始化GPIO管脚
               
   while (1)
   {
  printf("\r\n 'B' \r\n");
  printf("\n\twww.A435.com");
  ConversionValue = (u32)Test_ConversionResult();
  printf("\n\ti value is %d",ConversionValue);
void ADC_Configuration(void)
{
ADC_InitTypeDef ADC_InitStructure;
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;  //独立模式
ADC_InitStructure.ADC_ScanConvMode = ENABLE;  //连续多通道模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续转换模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//不受外界决定
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1;  //扫描通道数1
ADC_Init(ADC1,&ADC_InitStructure);
   /* Enable ADC1 reset calibaration register */   
   ADC_ResetCalibration(ADC1);  //重置ADC1的校准寄存器
   /* Check the end of ADC1 reset calibration register */
  // while(ADC_GetResetCalibrationStatus(ADC1));   //获取ADC重置校准寄存器的状态并等待其值变为0

   /* Start ADC1 calibaration */
   ADC_StartCalibration(ADC1);    //开始ADC1的校准状态
   /* Check the end of ADC1 calibration */
   while(ADC_GetCalibrationStatus(ADC1)); //获取ADC校准寄存器的状态并等待其值变为0(已完成校准)

        
ADC_RegularChannelConfig(ADC1, ADC_Channel_15, 1, ADC_SampleTime_55Cycles5);//ADC1,   
//ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 2, ADC_SampleTime_1Cycles5);//ADC1,  如果定义2各通道的话
   
     /* Enable ADC1 DMA */
   ADC_DMACmd(ADC1, ENABLE);
    /* Enable ADC1 */
   ADC_Cmd(ADC1, ENABLE);

  /*****上网,我自己加的模拟看门狗语句*********/
    ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_15);//第十五通道用模拟看门狗。
    ADC_AnalogWatchdogThresholdsConfig(ADC1, 0xbb8, 0x100);//设定模拟看门狗高低门槛。
    ADC_AnalogWatchdogCmd(ADC1, ADC_AnalogWatchdog_SingleRegEnable);//允许单通道加上模拟看门狗。
ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE);//允许模拟看门狗产生中断。
/* Start ADC1 Software Conversion */
   ADC_SoftwareStartConvCmd(ADC1, ENABLE);   //使能ADC1的软件转换启动功能

}
此帖出自stm32/stm8论坛

最新回复

单步跟踪很难保证器件工作完全的正确,比如中断定时器dma等, 用断点截在dma的结束位置或者另外用一个数组存储中间状态,暂停后分析.  详情 回复 发表于 2013-8-18 11:15
点赞 关注
 

回复
举报

4008

帖子

0

TA的资源

版主

沙发
 
跟一下看停在哪里了
此帖出自stm32/stm8论坛

点评

再问一下,一般ADC的硬件都要怎么设置? 我这块是stm32红牛开发板,我只在stm3210x参考手册里看到他说,VREF-管脚必须和VSSA相连接。其他的没提,还需要其他的设置么?  详情 回复 发表于 2013-8-18 20:44
我一步一步调试,没有停,只是收到的字符是错误的,全是这种  详情 回复 发表于 2013-8-18 10:14
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

板凳
 

回复 沙发huo_hu 的帖子

我一步一步调试,没有停,只是收到的字符是错误的,全是这种
此帖出自stm32/stm8论坛
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
单步跟踪很难保证器件工作完全的正确,比如中断定时器dma等,
用断点截在dma的结束位置或者另外用一个数组存储中间状态,暂停后分析.
此帖出自stm32/stm8论坛

点评

恩,谢谢,我又试了一下。可能是波特率的问题,改了一下波特率就可以了。 不过AD采集时发现得到的数不对,一直在变。然后我断掉外部的模拟输入,发现采集的数基本在1600左右变,但是变化不大。然后在线调试发现一步  详情 回复 发表于 2013-8-18 20:38

赞赏

1

查看全部赞赏

 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 4楼huo_hu 的帖子

恩,谢谢,我又试了一下。可能是波特率的问题,改了一下波特率就可以了。  不过AD采集时发现得到的数不对,一直在变。然后我断掉外部的模拟输入,发现采集的数基本在1600左右变,但是变化不大。然后在线调试发现一步一步调试,发现regular Data 组的寄存器ADC1_DR的值也是没走一步就变化一下,但是一直变化是很大,请问什么该寄存器的值问什么一直在变呢???  本人是初学很多地方不明白,谢谢你细心的解答。
此帖出自stm32/stm8论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 沙发huo_hu 的帖子

再问一下,一般ADC的硬件都要怎么设置? 我这块是stm32红牛开发板,我只在stm3210x参考手册里看到他说,VREF-管脚必须和VSSA相连接。其他的没提,还需要其他的设置么?
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表