打印
[STM32F0]

STM32F071芯片AD检测会导致芯片复位的问题

[复制链接]
1778|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
根叔威武|  楼主 | 2016-4-22 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近搞项目用STM32的片子,真是遇到很多问题,前一段时间遇到串口问题,现在又遇到AD的问题了,又来向各位大大求助了。我的问题如下:
用AD来检测温度值,一段时间就会导致芯片复位,不运行AD芯片就不会复位。
我的AD函数如下:
unsigned char f_MCU_ChkADValue(unsigned int i_Channel)
{
   unsigned int DataValue;
   ADC_InitTypeDef          ADC_InitStructure;
   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // ´ò¿ªÊ±ÖÓ
   ADC_DeInit(ADC1);
// Configure the ADC1 in continous mode withe a resolutuion equal to 12 bits
   ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
   ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
   ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;   
// ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T3_TRGO;
   ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
   ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;
   ADC_Init(ADC1, &ADC_InitStructure);   
// ת»»ADC1ͨµÀ,ÖÜÆÚ²ÉÑùʱ¼ä
   ADC_ChannelConfig(ADC1, i_Channel, ADC_SampleTime_28_5Cycles);   // ÓÐÈý¸öADת»»¶Ë¿Ú£¬Èȹ޼ÓÈÈζÈ
// ADC Calibration-ADCУ׼
   ADC_GetCalibrationFactor(ADC1);
// Enable the auto delay feature-ÆôÓÃ×Ô¶¯ÑÓʱ¹¦ÄÜ   
   ADC_WaitModeCmd(ADC1, ENABLE);
// ʹÄÜADC1
   ADC_AutoPowerOffCmd(ADC1, ENABLE);
// Enable ADCperipheral[PerIdx]-ÆôÓÃADCÍâÉè[PerIdx]
   ADC_Cmd(ADC1, ENABLE);     
// Wait the ADCEN falg-µÈ´ýADC1У׼Íê³É
   while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));
//ADC1 regular Software Start Conv
   ADC_StartOfConversion(ADC1);       

   while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
   DataValue=ADC_GetConversionValue(ADC1);
   return DataValue;
}

我在主函数中调用AD采样函数如下:
Ad_Heat3 = f_MCU_ChkADValue(ADC_Channel_13); // 用的13通道
就会一段时间产生复位(估计是看门狗复位)
把上面的调用注释掉以后就不会复位了,百度了半天闹不明白.....
端口初始化如下:
   RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);//
   GPIO_InitStruct.GPIO_Pin = GPIO_Pin_3;
   GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AN;
   GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL;
   GPIO_Init(GPIOC, &GPIO_InitStruct);

初始化函数只初始化了系统时钟,看门狗,串口和IO口,我是不是AD配置少配置什么东西了?谢谢
沙发
zangen| | 2016-4-23 17:59 | 只看该作者
求各位大大帮忙解答下,感觉网上资料也是以F1居多,F0的比较少,谢谢

使用特权

评论回复
板凳
zangen| | 2016-4-23 18:36 | 只看该作者
我看见别人的帖子怎么说ADC需要设置DMA呢?是不是我没设置DMA的原因?

使用特权

评论回复
地板
根叔威武|  楼主 | 2016-4-25 08:28 | 只看该作者
有米有大神帮帮忙,谢谢~~

使用特权

评论回复
5
根叔威武|  楼主 | 2016-4-27 08:44 | 只看该作者
我知道原因了,因为我没有配置DMA,第一次用STM的,闹了不少笑话,请大家见谅

使用特权

评论回复
6
yklstudent| | 2016-4-27 09:05 | 只看该作者
根叔威武 发表于 2016-4-27 08:44
我知道原因了,因为我没有配置DMA,第一次用STM的,闹了不少笑话,请大家见谅 ...

跟DMA有什么关系?
ADC原本就可以单独工作,又不是必须需要DMA配合才可以工作;
检测下复位是什么原因引起的?看门狗复位?

使用特权

评论回复
7
根叔威武|  楼主 | 2016-4-28 08:25 | 只看该作者
yklstudent 发表于 2016-4-27 09:05
跟DMA有什么关系?
ADC原本就可以单独工作,又不是必须需要DMA配合才可以工作;
检测下复位是什么原因引 ...

目前我配置了DMA后不会复位了,采集数据也正确,但是错误原因还没找到,AD独立工作还是配置有问题,我继续查查原因,谢谢你

使用特权

评论回复
8
sunyangxu| | 2018-9-7 13:33 | 只看该作者
stm32f030k6t6与stm32f071RBT6有什么区别?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝