我用的板子是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; |
评分
查看全部评分
评分
查看全部评分
我上手这块板子就是因为看了这个帖子,帖子里的所有步骤和操作我都亲手做了一遍,现在要把这块板子应用到实际项目中,所以才会添加ADC。
是空脚,连接在arduino接口上,用户可以自定义l
评分
查看全部评分
我刚发现我发的程序被截去了一部分,我的ADC时钟是直接使用系统时钟的。