
本帖最后由 heyongbo236 于 2017-4-3 13:52 编辑 /* ### - 1 - Initialize ADC peripheral #################################### */ /* * Instance = ADC1. * OversamplingMode = Disabled * ClockPrescaler = PCLK clock with no division. * LowPowerAutoPowerOff = Disabled (For this exemple continuous mode is enabled with software start) * LowPowerFrequencyMode = Enabled (To be enabled only if ADC clock is lower than 2.8MHz) * LowPowerAutoWait = Disabled (New conversion starts only when the previous conversion is completed) * Resolution = 12 bit (increased to 16 bit with oversampler) * SamplingTime = 7.5 cycles od ADC clock. * ScanConvMode = Forward * DataAlign = Right * ContinuousConvMode = Enabled * DiscontinuousConvMode = Disabled * ExternalTrigConvEdge = None (Software start) * EOCSelection = End Of Conversion event * DMAContinuousRequests = DISABLE */ AdcHandle.Instance = ADC1; AdcHandle.Init.OversamplingMode = DISABLE; AdcHandle.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV1; AdcHandle.Init.LowPowerAutoPowerOff = DISABLE; AdcHandle.Init.LowPowerFrequencyMode = ENABLE; AdcHandle.Init.LowPowerAutoWait = DISABLE; AdcHandle.Init.Resolution = ADC_RESOLUTION_12B; AdcHandle.Init.SamplingTime = ADC_SAMPLETIME_7CYCLES_5; AdcHandle.Init.ScanConvMode = ADC_SCAN_DIRECTION_FORWARD; AdcHandle.Init.DataAlign = ADC_DATAALIGN_RIGHT; AdcHandle.Init.ContinuousConvMode = ENABLE; AdcHandle.Init.DiscontinuousConvMode = DISABLE; AdcHandle.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_NONE; AdcHandle.Init.EOCSelection = ADC_EOC_SINGLE_CONV; AdcHandle.Init.DMAContinuousRequests = DISABLE; /* Initialize ADC peripheral according to the passed parameters */ if (HAL_ADC_Init(&AdcHandle) != HAL_OK) { Error_Handler(); } |
灰常感谢您!!!您这么一说倒是提醒了我!!!问题好像解决了!!!我刚又去看了下官网提供的那个源程序,您说的HAL_ADC_Init(&AdcHandle)这个初始化函数里面,确实有个地方提到了 外设时钟使能的函数:HAL_ADC_MspInit(hadc);在这个函数里面又有一个函数:ADCx_CLK_ENABLE();这个函数就是使能外设时钟的,这个函数里面又有一个宏定义,是在main.h里定义的,而main.h里面的是宏是调用的_hal_rcc_ex.h里的,也是在这里操作使能时钟寄存器的,说了半天,貌似就是绕一大圈回到了rcc库里去了。。。再次感谢您。以后还会遇到问题,希望到时候多多关注,多多指教啊!!!
评分
查看全部评分
谢谢您的关注和分享,你也在弄这个呢!我今天只弄了下GPIO点个灯的,这个还是比较好明白,ADC那个能采出准确数据但是还多其它的模式不明白,定时器和串口我暂时还没去弄,这个库是有点不习惯,不熟悉啊,现在也没有很多资料可查找的,有机会多多交流啊!!!相互学习下!!!
定时器,初始化后,需要自己启动,是个中间有start字符的函数,对应的停止计时器的函数,里面有个stop字符;
串口初始化后,用对应的函数发送时,里面又调用使能串口,或使能中断的宏,超时或完成后,会自动关闭中断,关闭串口;
SPI和串口类似;
其他的暂时还没用到,不了解。
评分
查看全部评分
恩,没关系,可以看看,以后这个可能会替代以前的,据说哦,谢谢!!!
嗯嗯。。。好的。。。确实是应该多看看,了解了解内部是怎么运作的。看来你很多经验啊。我新手啊
额,是我搞错了,抱歉哈。
恩恩。没事啊!你说的那个Start是没有。不过确实也是您说的 HAL_ADC_Init(&AdcHandle) 这个里面找到的那个时钟使能的。
嗯呢。。。。谢谢关注