搜索
查看: 2582|回复: 8

[已解决] B-L475E-IOT01A板子为什么会无法使用ADC

[复制链接]

该用户从未签到

2

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-7-3
发表于 2018-4-10 20:59:19 | 显示全部楼层 |阅读模式
10ST金币
我用的板子是ST公司的B-L475E-IOT01A ,程序是在官方的例程上修改的,主要是在Periph_Config()里添加了ADC的时钟,在main()函数里添加了MX_ADC1_Init(),程序里的时钟是我按照cubemx里配套的B-L475E-IOT01A板子的时钟树修改的,目前我定位错误定位到HAL_ADC_Init()函数里的LL_ADC_EnableInternalRegulator(hadc->Instance),这个函数应该是使能内部电压稳压器,但是不知道为什么,使能失败了,所以ADC初始化失败了。我目前将程序里所有能关的部件都关了,只配置了USART,RTC和ADC,相互之间应该不影响了,我配置为ADC的引脚是PC0。希望能有位用过B-L475E-IOT01A或者了解stm32l475的前辈指点迷津。关键代码如下,如果有问题请大家指明,这个问题对我来说很急,所以会一定会回复,欢迎大家讨论。
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct;//振荡器初始化
  RCC_ClkInitTypeDef RCC_ClkInitStruct;//时钟初始化

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE|RCC_OSCILLATORTYPE_MSI;
  RCC_OscInitStruct.LSEState = RCC_LSE_ON;//打开低速外部时钟
  RCC_OscInitStruct.MSIState = RCC_MSI_ON;
  RCC_OscInitStruct.MSICalibrationValue = 0;
  RCC_OscInitStruct.MSIClockRange = RCC_MSIRANGE_11;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_MSI;
  RCC_OscInitStruct.PLL.PLLM = 6;
  RCC_OscInitStruct.PLL.PLLN = 20;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV7;
  RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
  RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)//有问题
  {
    Error_Handler();
  }

  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
     clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
  {
    Error_Handler();
  }

  /* Enable MSI PLL mode */
  HAL_RCCEx_EnableMSIPLLMode();
}

void Periph_Config(void)
{
  RCC_PeriphCLKInitTypeDef PeriphClkInit;
  PeriphClkInit.PeriphClockSelection  = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1//设备时
                                       |RCC_PERIPHCLK_USART3|RCC_PERIPHCLK_I2C2
                                       |RCC_PERIPHCLK_RNG  |RCC_PERIPHCLK_ADC;
  PeriphClkInit.Usart1ClockSelection  = RCC_USART1CLKSOURCE_PCLK2;
  PeriphClkInit.Usart3ClockSelection  = RCC_USART3CLKSOURCE_PCLK1;
  PeriphClkInit.I2c2ClockSelection    = RCC_I2C2CLKSOURCE_PCLK1;
  PeriphClkInit.RngClockSelection     = RCC_RNGCLKSOURCE_PLLSAI1;
  PeriphClkInit.RTCClockSelection     = RCC_RTCCLKSOURCE_LSE;

最佳答案

查看完整内容

CUBE生成的是HAL库的,这个可以通过对比法找答案,既然HAL库的程序能用,说明不是硬件问题,大胆猜测下,是哪个参数错误导致的
回复

使用道具 举报

该用户从未签到

19

主题

1734

帖子

7

蝴蝶豆

论坛元老

最后登录
2021-5-10
发表于 2018-4-10 20:59:20 | 显示全部楼层
CUBE生成的是HAL库的,这个可以通过对比法找答案,既然HAL库的程序能用,说明不是硬件问题,大胆猜测下,是哪个参数错误导致的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回复

使用道具 举报

该用户从未签到

91

主题

4756

帖子

4

蝴蝶豆

论坛元老

最后登录
2021-2-27
发表于 2018-4-11 02:59:14 | 显示全部楼层
论坛里有ST IoT之路,B-L475E-IOT01A开发板试玩(转载)的帖子,参考下吧,既然你是修改官方程序,那么你可以先试验官方的,然后慢慢调整你需要的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-7-3
 楼主| 发表于 2018-4-11 09:08:19 | 显示全部楼层
feixiang20 发表于 2018-4-11 02:59
论坛里有ST IoT之路,B-L475E-IOT01A开发板试玩(转载)的帖子,参考下吧,既然你是修改官方程序,那么你可以 ...

我上手这块板子就是因为看了这个帖子,帖子里的所有步骤和操作我都亲手做了一遍,现在要把这块板子应用到实际项目中,所以才会添加ADC。
回复

使用道具 举报

该用户从未签到

19

主题

1734

帖子

7

蝴蝶豆

论坛元老

最后登录
2021-5-10
发表于 2018-4-11 18:57:43 | 显示全部楼层
pc0在板子上是空脚吗?
回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-7-3
 楼主| 发表于 2018-4-11 21:43:06 | 显示全部楼层
五哥1 发表于 2018-4-11 18:57
pc0在板子上是空脚吗?

是空脚,连接在arduino接口上,用户可以自定义l
回复

使用道具 举报

该用户从未签到

3

主题

1306

帖子

929

蝴蝶豆

版主

最后登录
2021-3-31
发表于 2018-4-12 11:40:11 | 显示全部楼层
建议你直接将cubex 的ADC移植,不要添加在systermclock_config里面..

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-7-3
 楼主| 发表于 2018-4-12 21:07:00 | 显示全部楼层
butterflyspring 发表于 2018-4-12 11:40
建议你直接将cubex 的ADC移植,不要添加在systermclock_config里面..

我刚发现我发的程序被截去了一部分,我的ADC时钟是直接使用系统时钟的。
回复

使用道具 举报

该用户从未签到

2

主题

8

帖子

0

蝴蝶豆

初级会员

最后登录
2018-7-3
 楼主| 发表于 2018-4-14 21:09:08 | 显示全部楼层
虽然为什么官方程序无法使用ADC的问题还是没有弄清楚,不过通过Cube生成的程序可以使用ADC,也算是有了一个解决方法,就先这样吧,有时间再把问题搞清楚。
回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-5-10 12:50 , Processed in 0.206159 second(s), 46 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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