找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1803|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

stm32F411RET6用HSI最高只有66M?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:272602 發(fā)表于 2020-8-8 01:26 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
搞了半天了,用標(biāo)準(zhǔn)庫最高配置66M,hal庫都配最高只能配置到64M,難道和STM32F103一樣?
標(biāo)準(zhǔn)庫配置如下:
static void SetSysClock(void)                               
{
                               
     __IO uint32_t HSIStartUpStatus = 0;
                // 把RCC外設(shè)初始化成復(fù)位狀態(tài)
    RCC_DeInit();
                //使能HSI, HSI=16M                               
     RCC_HSICmd(ENABLE);
                        // 等待 HSI 就緒
     HSIStartUpStatus = RCC->CR & RCC_CR_HSIRDY;
                        // 只有 HSI就緒之后則繼續(xù)往下執(zhí)行
                        if (HSIStartUpStatus == RCC_CR_HSIRDY) {

                                // 如果要超頻就得在這里下手啦
                        // 設(shè)置PLL來源時鐘,設(shè)置VCO分頻因子m,設(shè)置VCO倍頻因子n,
                                //  設(shè)置系統(tǒng)時鐘分頻因子p,設(shè)置OTG FS,SDIO,RNG分頻因子q
                                RCC_PLLConfig(RCC_PLLSource_HSI, 16, 264, 4, 7);
                                // 使能PLL
                                RCC_PLLCmd(ENABLE);
                                // 等待 PLL穩(wěn)定
                                while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) {}
                                /*-----------------------------------------------------*/
                                //開啟 OVER-RIDE模式,以能達(dá)到更高頻率
//                                 PWR->CR |=PWR_CR_VOS;
//                                while ((PWR->CSR & PWR_CSR_ODRDY) == 0) { }
//                                PWR->CR |= PWR_CR_ODSWEN;
//                                while ((PWR->CSR & PWR_CSR_ODSWRDY) == 0) {}
                                // 配置FLASH預(yù)取指,指令緩存,數(shù)據(jù)緩存和等待狀態(tài)
                                FLASH->ACR = FLASH_ACR_PRFTEN
                               
                      | FLASH_ACR_ICEN
                               
                      |FLASH_ACR_DCEN
                               
                      |FLASH_ACR_LATENCY_3WS;
                                /*-----------------------------------------------------*/                               
         RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
                                // 讀取時鐘切換狀態(tài)位,確保PLLCLK被選為系統(tǒng)時鐘
                                while (RCC_GetSYSCLKSource() != 0x08) {}
                                                        // 調(diào)壓器電壓輸出級別配置為1,以便在器件為最大頻率
                        // 工作時使性能和功耗實(shí)現(xiàn)平衡
                         RCC->APB1ENR |= RCC_APB1ENR_PWREN;
                                PWR->CR |= PWR_CR_VOS;
                                // HCLK = SYSCLK / 1
                                RCC_HCLKConfig(RCC_SYSCLK_Div1);
                                // PCLK2 = HCLK / 2
                                RCC_PCLK2Config(RCC_HCLK_Div2);
                                // PCLK1 = HCLK / 4
                                RCC_PCLK1Config(RCC_HCLK_Div4);
                               
     } else {
                                // HSI啟動出錯處理
                        while (1) {}
                               
     }
                               
}

hal庫配置如下:
void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_OscInitTypeDef RCC_OscInitStruct;

  /* Enable Power Control clock */
  __HAL_RCC_PWR_CLK_ENABLE();

  /* The voltage scaling allows optimizing the power consumption when the device is
     clocked below the maximum system frequency, to update the voltage scaling value
     regarding system frequency refer to product datasheet.  */
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);

  /* Enable HSI Oscillator and activate PLL with HSI as source */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 0x10;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLM = 16;
  RCC_OscInitStruct.PLL.PLLN = 384;
  RCC_OscInitStruct.PLL.PLLP = 6;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
      while(1)
  {
  }
  }

  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2
     clocks dividers */
  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;  
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;  
  if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK)
  {
      while(1)
  {
  }
  }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:804115 發(fā)表于 2020-8-8 09:10 來自手機(jī) | 只看該作者
用stm32cubemx圖形化界面配置一下試試,分分鐘出結(jié)果,記得芯片要選對。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

板凳
ID:272602 發(fā)表于 2020-8-8 15:23 | 只看該作者
自己來結(jié)貼!問題已解決,13腳應(yīng)接一個AVDD和VDD之間接一個100uH電感,30腳接一個4.7uF電容。本以為和STM32F103 pintopin兼容。結(jié)果搞了這么長時間。懶人浪費(fèi)時間!早點(diǎn)看手冊就好了!

評分

參與人數(shù) 1黑幣 +5 收起 理由
1692483014 + 5 淡定

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表