现在想用F0里面固件库的IIC。但是在里面发现了一个问题,就是不会计算IIC的时钟设置,官方有计算的工具,
在工具里有1行不明白该怎么写。。我的片子是stm32f051。晶振是8MHZ的,然后倍频到48MHZ。那么在计算工具里的这一行我是写8000还是48000
。还有我看到有些例程里面还有这么1句。是不是 我用系统的SystemInit();这一句就不用下面这一句话了?
RCC_I2CCLKConfig(RCC_I2C1CLK_HSI);//HSI 8MHz
我自己的初始化时钟是不是要加上上面那句?
- void InitialSysClock(void)
- {
- /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------------*/
- /* RCC system reset(for debug purpose) */
- RCC_DeInit(); //设置RCC寄存器重新设置为默认值
- /* Enable HSE */
- RCC_HSEConfig(RCC_HSE_ON); //打开外部高速时钟晶振
- /* Wait till HSE is ready */
- HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待外部高速时钟晶振工作
- if (HSEStartUpStatus == SUCCESS) //外部就绪
- {
- /* Enable Prefetch Buffer */
- FLASH_PrefetchBufferCmd(ENABLE);
- /* Flash 1 wait state */
- FLASH_SetLatency(FLASH_Latency_1);
- /*************************************************************************/
- /* HSE=8MHz,HCLK=48MHz,PCLK2=48MHz */
- /*************************************************************************/
- /* HCLK = SYSCLK */
- RCC_HCLKConfig(RCC_SYSCLK_Div1); //设置AHB时钟不分频
- /* PCLK= HCLK */
- RCC_PCLKConfig(RCC_HCLK_Div1); //设置APB时钟不分频
-
- RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4); //设置ADC时钟2分频 12Mhz
- /* PLLCLK = 4MHz * 12 = 48 MHz */
- RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12);
-
- /* Enable PLL */
- RCC_PLLCmd(ENABLE); //使能PLL
- /* Wait till PLL is ready */
- while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {
- }
- /* Select PLL as system clock source */
- RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
- /* Wait till PLL is used as system clock source */
- while (RCC_GetSYSCLKSource() != 0x08) {
- }
- }
- //M0只有1个中断优先级
- }