heyongbo236 发表于 2016-12-8 16:47:58

使用问题

本帖最后由 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();
}


heyongbo236 发表于 2016-12-8 20:18:51

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库里去了。。。再次感谢您。以后还会遇到问题,希望到时候多多关注,多多指教啊!!!

any012 发表于 2016-12-8 16:59:08

额,这阵子也在学习HAL库,说下自己遇到的。
定时器,初始化后,需要自己启动,是个中间有start字符的函数,对应的停止计时器的函数,里面有个stop字符;
串口初始化后,用对应的函数发送时,里面又调用使能串口,或使能中断的宏,超时或完成后,会自动关闭中断,关闭串口;
SPI和串口类似;
其他的暂时还没用到,不了解。

jackten 发表于 2016-12-8 17:08:11

没做过                     

cuyebiren 发表于 2016-12-8 17:18:27

应该 是在 HAL_ADC_Init(&AdcHandle)中 使能的 时钟。。。带 Start 的函数 中 使能 相应外设。。。

heyongbo236 发表于 2016-12-8 19:54:21

any012 发表于 2016-12-8 16:59
额,这阵子也在学习HAL库,说下自己遇到的。
定时器,初始化后,需要自己启动,是个中间有start字符的函数 ...

谢谢您的关注和分享,你也在弄这个呢!我今天只弄了下GPIO点个灯的,这个还是比较好明白,ADC那个能采出准确数据但是还多其它的模式不明白,定时器和串口我暂时还没去弄,这个库是有点不习惯,不熟悉啊,现在也没有很多资料可查找的,有机会多多交流啊!!!相互学习下!!!

heyongbo236 发表于 2016-12-8 19:56:06

jackten 发表于 2016-12-8 17:08
没做过

恩,没关系,可以看看,以后这个可能会替代以前的,据说哦,谢谢!!!

heyongbo236 发表于 2016-12-8 20:22:00

新手上路,刚成为初级啦啦啦:P

cuyebiren 发表于 2016-12-8 20:30:02

heyongbo236 发表于 2016-12-8 20:18
灰常感谢您!!!您这么一说倒是提醒了我!!!问题好像解决了!!!我刚又去看了下官网提供的那个源程序 ...

:handshake没事可以多看看源码,搞明白它是怎么运作的。。。不用搞得特别明白,感觉达到会用不疑的程度就可以了。。。

heyongbo236 发表于 2016-12-8 20:36:23

cuyebiren 发表于 2016-12-8 20:30
没事可以多看看源码,搞明白它是怎么运作的。。。不用搞得特别明白,感觉达到会用不疑的程度就 ...

嗯嗯。。。好的。。。确实是应该多看看,了解了解内部是怎么运作的。看来你很多经验啊。我新手啊:P
页: [1] 2 3
查看完整版本: 使用问题