问答

汇集网友智慧,解决技术难题

fish1968

TA的家园币:12  

  • 请问 MM32F103 的 ADC CLK 分频设置是不是有问题?

    貌似提供的样例代码与规格书对应不上,样例代码里修改了RCCCFGR的BIT15:14说对应2,4,6,8分频,但是使用手册里,对应位为reserved只读始终为0,并且即便是这样也只有四种分频选择,与时钟配置树图中的/2,/4,/8/10/12/14/16也对不上。这是提供的信息有纰漏,还是在其他地方有更多信息,我不知道?完整的问题在下:我看到ADC参考样例代码的初始化过程中,调用了RCC_ADCCLKConfig(RCC_PCLK2_Div6);对应的函数内容为voidRCC_ADCCLKConfig(uint32_tRCC_PCLK2){uint32_ttmpreg=0;/*Checktheparameters*/assert_param(IS_RCC_ADCCLK(RCC_PCLK2));tmpreg=RCC->CFGR;/*ClearADCPRE[1:0]bits*/tmpreg&=CFGR_ADCPRE_Reset_Mask;/*SetADCPRE[1:0]bitsaccordingtoRCC_PCLK2value*/tmpreg|=RCC_PCLK2;/*Storethenewvalue*/RCC->CFGR=tmpreg;}其中CFGR_ADCPRE_Reset_Mask为0xFFF3FFF也就是说,修改RCC->CFGR的Bit[15:14]但是,规格书中(1.7中文版本)的RCCCFGR寄存器(第75页/463)部分说“15:14Reserved始终读为0”并没有解释对应的内容,是否有问题?HAL_RCC.c中对应的define如下#defineRCC_PCLK2_Div2((uint32_t)0x00000000)#defineRCC_PCLK2_Div4((uint32_t)0x00004000)#defineRCC_PCLK2_Div6((uint32_t)0x00008000)#defineRCC_PCLK2_Div8((uint32_t)0x0000C000)#defineIS_RCC_ADCCLK(ADCCLK)(((ADCCLK)==RCC_PCLK2_Div2)||((ADCCLK)==RCC_PCLK2_Div4)||\((ADCCLK)==RCC_PCLK2_Div6)||((ADCCLK)==RCC_PCLK2_Div8))也就是这两个bit从00到11四种组合分别对应2,4,6,8分频。在用户手册中时钟树配置部分(68页/463)的框图中,ADCCLK由APB2再经ADCPrescaler后获得,但是框图中的分频选项为:/2,/4,/8/10/12/14/16与这里RCC代码的定义也不一致。希望得到解释说明。

    MCU MM32 国产芯片

    2025-02-07 0