日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

3.STM32F429时钟系统配置方法

發布時間:2024/1/1 windows 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 3.STM32F429时钟系统配置方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 1.時鐘系統
    • 1.1.時鐘源
    • 1.2.系統時鐘SYSCLK計算
    • 1.3.AHB和APB總線時鐘
    • 1.4.其它時鐘
  • 2.時鐘配置函數
    • 2.1.SystemInit函數
    • 2.2.Stm32_Clock_Init函數
    • 2.3.一些匯編指令

在前幾篇文章中我想把一些基礎的部分簡單總結一下:首先是前兩篇文章,學習一個mcu就要先對它的外設有初步的理解,還有要使用的HAL庫,它相當于我們的代碼與硬件之間連接的橋梁;這篇博客會總結一下429時鐘樹的一些知識,還有時鐘配置函數;再之后可能還會總結基于SysTick的延時函數、程序執行流程、中斷、DMA等。

1.時鐘系統

1.1.時鐘源

F429有5個時鐘源:HSI,HSE,LSI,LSE,PLL(PLL,PLLI2S,PLLSAI)。HSI,HSE,PLL是高速時鐘,LSI,LSE是低速時鐘。HSE,LSE是外部時鐘源。

  • LSI是低速內部時鐘,32kHz左右RC振蕩器,獨立看門狗和自動喚醒單元。
  • LSE是低速外部時鐘,32.768kHz石英晶體,RTC 的時鐘源。
  • HSE是高速外部時鐘,4MHz~26MHz,板子是25M。可以做為系統時鐘或PLL輸入。
  • HSI是高速內部時鐘,16MHz,系統時鐘或PLL輸入。僅需幾個微秒就能啟動,但是精度差。當HSE故障時,HSI是備用時鐘。
  • PLL主要作用是對時鐘進行倍頻,然后把時鐘輸出到各個功能部件,共有3個PLL:
    a) 主PLL由HSE或者HSI提供時鐘信號,有兩個不同的輸出時鐘。第一個PLLCLK用于生成高速的系統時鐘(最高180MHz)。第二個PLLQ為48M,用于USB OTG FS,隨機數發生器和SDIO時鐘。
    b) PLLI2S在I2S和SAI1上實現高品質音頻
    c) PLLSAI用于SAI輸入時鐘,LCD_TFT接口時鐘。
  • 1.2.系統時鐘SYSCLK計算


    主PLL時鐘來若自HSE,也就是25MHz的外部晶振,先經過分頻系數為M的分頻器,再經過倍頻系數為N的倍頻器,還需要經過分頻系數為 P(第一個輸出 PLLP)或者 Q(第二個輸出 PLLQ)的分頻器分頻之后,最后生成最終的主PLL時鐘。我們設置M=25,N=360,P=2,則生成的高速時鐘 PLLP(也就是PLLCLK)為180MHz。下圖為在CubeMX中配置主時鐘,HSE可以由有源或無源晶振或提供。當使用有源晶振時,時鐘從OSC_IN進入,OSC_OUT 懸空;選用無源晶振時,時鐘從OSC_IN 和 OSC_OUT進入,并且要配諧振電容。


    但是 USB OTG FS的情況比較特殊,必須使用 48M,Q=VCO輸出時鐘360/48=7.5,出現了小數這明顯是錯誤。野火教程中將N設為336,PLLCLK=VCOCLK/2=168M,USBCLK=336/7=48M,也就是PLLCLK降頻了。正點原子教程中選擇超頻的方法,設N=432,USBCLK=432/9=48M,此時PLLCLK=216MHz。

    1.3.AHB和APB總線時鐘

    AHB總線時鐘HCLk由SYSCLK經AHB預分頻器分頻后得到,分頻系數由RCC_CFGR的HPRE 位設置,設為1分頻,即HCLK=SYSCLK=180M。AHB上的外設有FSMC,RNG,DCMI,USB OTG FS,USB OTG HS,以太網MAC,DMA,SRAM,Flash,RCC,CRC,GPIO。
    APB1總線時鐘PCLK1由HCLK經低速APB預分頻器得到,分頻系數由RCC_CFGR 的PPRE1位設置,配置PCLK1=HCLK/4=45M。總線上的外設有UART2/3/4/5/7/8,DAC,PWR,CAN1/2,I2C1/2/3,I2S2/3,SPI2/3,RTC,TIM2/3/4/5/6/7/12/13/14。
    APB2總線時鐘PCLK2由HCLK經高速APB2預分頻器得到,由RCC_CFGR的PPRE2位設置。PCLK2=HCLK/2=90M。總線上的外設有SPI1/4/5/6,TIM1/8/9/10/11,EXTI,SYSCFG,ADC1/2/3,USART1/6。

    1.4.其它時鐘

  • 獨立看門狗時鐘源只能是低速LSI,32kHz左右。
  • RTC 時鐘源可以選擇 LSI,LSE,以及HSE分頻后的時鐘(通過 RCC_BDCR選擇),一般選擇 LSE,即外部32.768Khz。
  • MCO1和MCO2分別是向PA8和PC9輸出時鐘。MCO1的四個時鐘來源分別為:HSI/LSE/HSE/PLL;MCO2的四個時鐘來源分別為:HSE/PLL/SYSCLK/PLLI2S,最大不超過100MHz。
  • I2S時鐘源可以是PLLI2S_R 時鐘或外部時鐘I2S_CKIN(通過寄存器I2SSRC選擇),原子的教程播放音頻用的SAI,沒用I2S。
  • LCD-TFT(LTDC)接口時鐘唯一來源是PLLSAI_R。
  • SAI1_A的時鐘,通過寄存器SAI1ASRC選擇內部PLLSAI_Q、PLLI2S_Q或外部I2SCKIN作為時鐘。原子教程使用SAI1_A驅動 WM8978,時鐘來自PLLSAI_Q。
  • LTDC的時鐘固定為PLLSAI_R。
  • Systick的時鐘源可以是AHB時鐘HCLK或HCLK/8。
  • 2.時鐘配置函數

    2.1.SystemInit函數

    該函數在system_stm32f4xx.c中實現,在啟動文件startup_stm32f429xx.s中被調用。SystemInit主要做了如下四個方面工作:

  • FPU設置。
  • 復位RCC時鐘配置為默認復位值(默認開啟HIS),即配置系統時鐘為16MHz,沒有像標準庫的SystemInit一樣進行時鐘的初始化配置。
  • 外部存儲器配置。
  • 中斷向量表地址配置。
  • void SystemInit(void) {/* FPU 設置------------------------------------------------------------*/#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */#endif/* 復位 RCC 時鐘配置為默認配置-----------*/RCC->CR |= (uint32_t)0x00000001;//打開 HSION 位RCC->CFGR = 0x00000000;//復位 CFGR 寄存器RCC->CR &= (uint32_t)0xFEF6FFFF;//復位 HSEON, CSSON and PLLON 位RCC->PLLCFGR = 0x24003010; //復位寄存器 PLLCFGRRCC->CR &= (uint32_t)0xFFFBFFFF;//復位 HSEBYP 位RCC->CIR = 0x00000000;//關閉所有中斷#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)SystemInit_ExtMemCtl();#endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM *//* 配置中斷向量表地址=基地址+偏移地址 ------------------*/#ifdef VECT_TAB_SRAMSCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET;#elseSCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;#endif }

    2.2.Stm32_Clock_Init函數

    該函數除了配置SYSCLK值外,還配置了AHB,APB1和APB2的分頻系數,也就是確定了HCLK,PCLK1和PCLK2的時鐘值,是正點原子教程里的時鐘初始化函數,在HAL_Init()之后調用。

    void Stm32_Clock_Init(u32 plln,u32 pllm,u32 pllp,u32 pllq) {HAL_StatusTypeDef ret = HAL_OK;RCC_OscInitTypeDef RCC_OscInitStructure; RCC_ClkInitTypeDef RCC_ClkInitStructure;__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR時鐘//下面這個設置用來設置調壓器輸出電壓級別,以便在器件未以最大頻率工作//時使性能與功耗實現平衡,此功能只有STM32F42xx和STM32F43xx器件有,__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);//設置調壓器輸出電壓級別1RCC_OscInitStructure.OscillatorType=RCC_OSCILLATORTYPE_HSE; //時鐘源為HSERCC_OscInitStructure.HSEState=RCC_HSE_ON; //打開HSERCC_OscInitStructure.PLL.PLLState=RCC_PLL_ON;//打開PLLRCC_OscInitStructure.PLL.PLLSource=RCC_PLLSOURCE_HSE;//PLL時鐘源選擇HSERCC_OscInitStructure.PLL.PLLM=pllm; //主PLL和音頻PLL分頻系數(PLL之前的分頻),取值范圍:2~63.RCC_OscInitStructure.PLL.PLLN=plln; //主PLL倍頻系數(PLL倍頻),取值范圍:64~432. RCC_OscInitStructure.PLL.PLLP=pllp; //系統時鐘的主PLL分頻系數(PLL之后的分頻),取值范圍:2,4,6,8.(僅限這4個值!)RCC_OscInitStructure.PLL.PLLQ=pllq; //USB/SDIO/隨機數產生器等的主PLL分頻系數(PLL之后的分頻),取值范圍:2~15.ret=HAL_RCC_OscConfig(&RCC_OscInitStructure);//初始化if(ret!=HAL_OK) while(1);ret=HAL_PWREx_EnableOverDrive(); //開啟Over-Driver功能if(ret!=HAL_OK) while(1);//選中PLL作為系統時鐘源并且配置HCLK,PCLK1和PCLK2RCC_ClkInitStructure.ClockType=(RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2);RCC_ClkInitStructure.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK;//設置系統時鐘時鐘源為PLLRCC_ClkInitStructure.AHBCLKDivider=RCC_SYSCLK_DIV1;//AHB分頻系數為1RCC_ClkInitStructure.APB1CLKDivider=RCC_HCLK_DIV4; //APB1分頻系數為4RCC_ClkInitStructure.APB2CLKDivider=RCC_HCLK_DIV2; //APB2分頻系數為2ret=HAL_RCC_ClockConfig(&RCC_ClkInitStructure,FLASH_LATENCY_5);//同時設置FLASH延時周期為5WS,也就是6個CPU周期。if(ret!=HAL_OK) while(1); }

    該函數步驟如下:

  • 使能PWR時鐘:調用__HAL_RCC_PWR_CLK_ENABLE()。
  • 設置調壓器輸出電壓級別:調用__HAL_PWR_VOLTAGESCALING_CONFIG()。
  • 選擇是否開啟Over-Driver功能:調用函數 HAL_PWREx_EnableOverDrive()。
  • 配置時鐘源相關參數,配置好后調用函數 HAL_RCC_OscConfig()。
  • 配置系統時鐘源以及AHB,APB1和APB2的分頻系數,配置好后調用函數HAL_RCC_ClockConfig()。
  • 2.3.一些匯編指令

    //關閉所有中斷(但是不包括fault和NMI中斷) __asm void INTX_DISABLE(void) {CPSID IBX LR } //開啟所有中斷 __asm void INTX_ENABLE(void) {CPSIE IBX LR } //設置棧頂地址 //addr:棧頂地址 __asm void MSR_MSP(u32 addr) {MSR MSP, r0 //set Main Stack valueBX r14 }

    總結

    以上是生活随笔為你收集整理的3.STM32F429时钟系统配置方法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 午夜做爰xxxⅹ性高湖视频美国 | 超碰国产人人 | 亚洲av永久无码精品国产精品 | 在线香蕉 | 亚洲精品成人在线视频 | 欧美日韩精品在线播放 | 91操碰| 色爱AV综合网国产精品 | 欧美精品一区视频 | 黄色3级视频 | 国产国语videosex另类 | 欧美激情va永久在线播放 | 成人av在线播放网站 | 黄色在线观看视频网站 | 国产福利精品在线 | 国产91免费观看 | 午夜剧场在线 | 五月天婷婷丁香花 | 久久国产三级 | 国产免费一区二区三区网站免费 | 国产小视频你懂的 | 欧美色图国产精品 | 久久久在线免费观看 | 日韩欧美精品在线播放 | 男人的天堂影院 | 亚洲成人一区二区在线观看 | 在线观看 亚洲 | 韩国伦理中文字幕 | 日本wwwwwww| 秋霞7777鲁丝伊人久久影院 | 天堂色在线 | 国产精品国产一区二区 | 欧美大片高清免费观看 | 午夜精品网站 | jzzjzzjzz亚洲成熟少妇 | 2020狠狠干| 日本少妇做爰全过程毛片 | 日本三级中文字幕在线观看 | 日批视频在线 | 成年视频在线 | 国家队动漫免费观看在线观看晨光 | 日批视频在线看 | 教练含着她的乳奶揉搓揉捏动态图 | 日b影院 | 国产中文字幕视频 | 欧美日韩一卡二卡三卡 | 国产午夜无码视频在线观看 | 亚洲第一狼人区 | 成人在线观看h | 亚洲一区二区三区欧美 | 91久久人澡人人添人人爽欧美 | 日韩在线精品视频 | 欧美aa大片 | 插插综合视频 | 精彩久久| 日韩av一区二区在线观看 | 国产永久在线 | 97se在线视频 | 精品亚洲一区二区三区四区五区 | 三级毛毛片 | 国内精品视频在线播放 | 操欧美女 | 嫩草国产在线 | 欧美精品免费看 | 亚洲精品中文字幕成人片 | 久久久成人精品一区二区三区 | 天天做天天爱天天做 | 人人射人人插 | 亚洲成av人片在www色猫咪 | 亚州综合视频 | 海量av资源 | 香蕉911 | 亚洲视频图片 | 国产视频一区二区在线观看 | 国产chinesehd天美传媒 | 中文字幕黑丝 | 日韩av一区二区在线播放 | 欧美黑人一区二区三区 | 精品无码人妻一区 | 亚洲成人精品在线观看 | 色片网站在线观看 | 东北女人啪啪ⅹxx对白 | 理论片在线观看理伦片 | 免费观看成人在线视频 | 一区二区三区四区五区视频 | 国产99久久久国产精品 | 午夜一区二区三区免费观看 | 亚洲麻豆精品 | 黄色综合网站 | 精品成人无码久久久久久 | 日本免费一区二区三区 | av二区在线| 午夜网站在线 | 丰满女邻居的色诱4hd | 正在播放木下凛凛88av | 亚洲国产黄色 | 国产精品国产a级 | 久久久香蕉视频 | 成人午夜久久 |