你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

外设初始化函数执行无效

[复制链接]
lz0923 提问时间:2019-7-23 15:05 /
悬赏5ST金币未解决
通过Cube配置adc参数,在执行完MX_ADC1_Init语句后ADC没有被配置。
具体情况如图(ADC初始化无效):。
可以看到,在执行完MX_ADC1_Init语句后,右侧的ADC寄存器全都是0。
作为对比,这是一张正确执行该语句后的效果图(ADC初始化成功):。
在正确执行后,右侧的几个控制寄存器应该会被配置为相应值。
我再次尝试进入该函数内部单步执行,ADC参数初始化和通道初始化两个子函数返回状态都是HAL_OK。但是寄存器依然没有被配置。
最后附上我的ADC初始化参数设置代码:
void MX_ADC1_Init(void)
{
  ADC_ChannelConfTypeDef sConfig = {0};
  /**Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion)   */
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.ScanConvMode = ADC_SCAN_DISABLE;
  hadc1.Init.ContinuousConvMode = DISABLE;
  hadc1.Init.DiscontinuousConvMode = DISABLE;
  hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE;
  hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
  hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc1.Init.NbrOfConversion = 1;
  hadc1.Init.DMAContinuousRequests = DISABLE;
  hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  if (HAL_ADC_Init(&hadc1) != HAL_OK)
  {
    Error_Handler();
  }
  /**Configure for the selected ADC regular channel its corresponding rank in the sequencer and its sample time. */
  sConfig.Channel = ADC_CHANNEL_2;
  sConfig.Rank = ADC_REGULAR_RANK_1;
  sConfig.SamplingTime = ADC_SAMPLETIME_112CYCLES;
  if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  {
    Error_Handler();
  }

}






PS.今天我重新建了一个工程,添加相同代码。运行时发现ADC能正常初始化,但是定时器又不行了。

ADC初始化无效

ADC初始化无效

ADC初始化成功

ADC初始化成功

单步1

单步1

单步2

单步2
收藏 评论2 发布时间:2019-7-23 15:05

举报

2个回答
lz0923 回答时间:2019-7-23 16:55:55
####问题解决了,但是不知道原理。####

今天上午我重新建了一个工程,一路运行下来发现ADC能够正常初始化了,但是定时器又不行了。
单步执行,修改编译优化等级都没用。
后面我把while循环里的全部代码注释掉,两个外设都能正常初始化。
然后我一部分一部分地取消注释,最终发现有一段跟ADC和定时器有关的操作代码注释掉之后就能正常初始化。
我与之前能够正常运行的程序对比,发现在正常的程序中我把这段操作代码封装成了函数,在while循环中调用。
我尝试在不能正常运行的程序中也这样做,结果两个外设都正常初始化了。
原因我还不知道,希望大神可以解答。
butterflyspring 回答时间:2019-8-12 16:20:42
看看外设时钟有没有打开

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版