使用问题
本帖最后由 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();
}
cuyebiren 发表于 2016-12-8 17:18
应该 是在 HAL_ADC_Init(&AdcHandle)中 使能的 时钟。。。带 Start 的函数 中 使能 相应外设。。。 ...
灰常感谢您!!!您这么一说倒是提醒了我!!!问题好像解决了!!!我刚又去看了下官网提供的那个源程序,您说的HAL_ADC_Init(&AdcHandle)这个初始化函数里面,确实有个地方提到了外设时钟使能的函数:HAL_ADC_MspInit(hadc);在这个函数里面又有一个函数:ADCx_CLK_ENABLE();这个函数就是使能外设时钟的,这个函数里面又有一个宏定义,是在main.h里定义的,而main.h里面的是宏是调用的_hal_rcc_ex.h里的,也是在这里操作使能时钟寄存器的,说了半天,貌似就是绕一大圈回到了rcc库里去了。。。再次感谢您。以后还会遇到问题,希望到时候多多关注,多多指教啊!!! 额,这阵子也在学习HAL库,说下自己遇到的。
定时器,初始化后,需要自己启动,是个中间有start字符的函数,对应的停止计时器的函数,里面有个stop字符;
串口初始化后,用对应的函数发送时,里面又调用使能串口,或使能中断的宏,超时或完成后,会自动关闭中断,关闭串口;
SPI和串口类似;
其他的暂时还没用到,不了解。 没做过 应该 是在 HAL_ADC_Init(&AdcHandle)中 使能的 时钟。。。带 Start 的函数 中 使能 相应外设。。。 any012 发表于 2016-12-8 16:59
额,这阵子也在学习HAL库,说下自己遇到的。
定时器,初始化后,需要自己启动,是个中间有start字符的函数 ...
谢谢您的关注和分享,你也在弄这个呢!我今天只弄了下GPIO点个灯的,这个还是比较好明白,ADC那个能采出准确数据但是还多其它的模式不明白,定时器和串口我暂时还没去弄,这个库是有点不习惯,不熟悉啊,现在也没有很多资料可查找的,有机会多多交流啊!!!相互学习下!!! jackten 发表于 2016-12-8 17:08
没做过
恩,没关系,可以看看,以后这个可能会替代以前的,据说哦,谢谢!!! 新手上路,刚成为初级啦啦啦:P heyongbo236 发表于 2016-12-8 20:18
灰常感谢您!!!您这么一说倒是提醒了我!!!问题好像解决了!!!我刚又去看了下官网提供的那个源程序 ...
:handshake没事可以多看看源码,搞明白它是怎么运作的。。。不用搞得特别明白,感觉达到会用不疑的程度就可以了。。。 cuyebiren 发表于 2016-12-8 20:30
没事可以多看看源码,搞明白它是怎么运作的。。。不用搞得特别明白,感觉达到会用不疑的程度就 ...
嗯嗯。。。好的。。。确实是应该多看看,了解了解内部是怎么运作的。看来你很多经验啊。我新手啊:P