STM32F407-RCCÅäÖà ÁªÏµ¿Í·þ

·¢²¼Ê±¼ä : ÐÇÆÚ¶þ ÎÄÕÂSTM32F407-RCCÅäÖøüÐÂÍê±Ï¿ªÊ¼ÔĶÁ3c11ec1925c52cc58bd6bed8

RCC £¨Reset and Clock Control£©ÅäÖÃ

ÕâÀï½éÉÜRCC µÄ ʱÖÓ¿ØÖƹ¦ÄÜ

ÔÚSTM32F103ÉÏ£¬ÓÉÓÚС×éËùÓеİå×Ó¶¼Ê¹ÓÃÓà ͬÑùµÄоƬ£¬Í¬ÑùµÄ¾§Õñ£¬ÒÔ¼°Í¬ÑùµÄ¿âº¯Êý£¬¼´Ê¹ÎÒÃDz»È¥Àí½âRCC£¬ÈÔÈ»¿ÉÒÔ½«´ó¶àÊý¹¦Äܵ÷ÊÔ³öÀ´¡£µ«Èç¹ûʹÓò»Í¬ÐͺŵÄоƬ£¬ÀýÈçÓÃSTM32F407 Óë STM32103 ½øÐÐͨÐÅ£¬Èç¹û²»È¥ÅªÇå³þRCC£¬ÔÚµ÷ÊÔÖпÉÄÜ»áÓöµ½Âé·³¡£

ÏÂÃæ¾ÍÎÒµ÷ÊÔSTM32F407µÄÕâ¶Îʱ¼ä£¬½éÉÜÒ»ÏÂRCCµÄ²¿·Ö¹¦ÄÜ¡£ÎĵµµÄÇ°°ë²¿·ÖÊǹØÓÚRCCµÄ²¿·Ö¹¦ÄÜÃèÊö£¬ºó°ë²¿·ÖÊǹØÓڿ⺯ÊýµÄʹÓá£

ʱÖӽṹ

£¨Ô­Í¼Çë²Î¿¼STM32F407 ²Î¿¼ÊÖ²áRCC²¿·Ö£©

STM32F407×î¸ß²ãÊÇSYSCLKϵͳʱÖÓ£¬ÓÉÆäÉú³ÉÁË AHBʱÖÓ£¬ÔÙÓÉAHBʱÖÓÉú³ÉAPBʱÖÓ¡£

SYSCLKϵͳʱÖÓ¿ÉÒÔÓÉ3¸ö»ù±¾µÄʱÖÓÔ´»ñµÃ£ºHSE£¨Íⲿ¸ßËÙ¾§Õñ£©»òHSI£¨ÄÚ²¿¸ßËÙ¾§Õñ£©»òPLLËøÏà»·±¶Æµ¡£

ÀýÈ磺

°å×ÓÉϺ¸ÁË8MHzµÄ¾§Õñ£¬Ôò HSE = 8MHz¡£Èç¹ûº¸ÁË25MHzµÄ£¬ÔòHSE = 25MHz¡£ HSIÊÇоƬÄÚ²¿×Ô´øµÄ¾§Õñ£¬Æä´óСÓÉоƬÐͺžö¶¨£¬ÈçSTM32F407µÄHSIÊÇ16MHz¡£

PLL±¶ÆµµÄ¹¦ÄÜÊÇ£º½«HSE»òHSIµÄƵÂÊ·Å´ó£¬×î´ó¿ÉÒÔ·Å´óµ½168MHz.

SYSCLKϵͳʱÖÓ¿ÉÒÔÓÉHSE/HSI/PLLÌṩ¡£

ÀýÈçʹÓÿ⺯Êý£º

RCC_SYSCLKConfig( RCC_SYSCLKSource_HSE )£» ´ú±íÓà HSEÍⲿ¸ßËÙ¾§Õñ×÷ΪϵͳʱÖÓÔ´¡£

Èç¹ûHSE =8MHz£¬ÔòSYSCLK = 8M£¬¼´STM32F407¾Í»áÔËÐÐÔÚ8MµÄËٶȣ» Èç¹ûHSE=25M£¬ÔòSYSCLK = 25M£¬¼´STM32F407¾Í»áÔËÐÐÔÚ25M¡£

RCC_SYSCLKConfig( RCC_SYSCLKSource_HSI )£» ´ú±íÓà HSIÄÚ²¿¸ßËÙ¾§Õñ×÷ΪϵͳʱÖÓÔ´£¬

Èç¹ûHSI=16M£¬ÔòSYSCLK=16M£¬¼´STM32F407 ¾Í»áÔËÐÐÔÚ16MµÄËٶȡ£

RCC_SYSCLKConfig( RCC_SYSCLKSource_PLLCLK )£»´ú±íÓÃPLLʱÖÓ×÷ΪϵͳʱÖÓÔ´¡£

Èç¹ûÅäÖÃPLL±¶ÆµÖÁ168M£¬ÔòSYSCLK=168M£¬¼´STM32F407 »áÔËÐÐÔÚ168M£» Èç¹û±¶ÆµÖÁ144M£¬ÔòSYSCLK=144M£¬STM32F407¾Í»áÔËÐÐÔÚ144M£» Èç¹û±¶ÆµÖÁ72M£¬STM32F407Ò²»áÏñSTM32F103ÔËÐÐÔÚ72M£»

´ÓSYSCLK£¬½ô½Ó×Å·ÖµÃAHBʱÖÓ£¨Ò²½ÐHCLK£©¡£

¼ÙÉè´ËʱÎÒÃÇÒѾ­Ñ¡ÔñPLL×÷ΪϵͳʱÖÓÔ´£¬ÇÒPLL±¶ÆµÖÁ168M£¬¼´SYSCLK=168M¡£

ÄÇôAHBµÄ×î¸ßƵÂʾÍΪ168MHz¡£

·½¿òµ×²¿µÄÊý×Ö /1,2...512 ´ú±íAHBʱÖÓÔ¤·ÖƵÊý£¬·¶Î§1~512£¬ Èç¹ûÊÇ 1£¬ ¼´HCLKΪSYSCLKµÄ1·ÖƵ£¬ HCLK = SYSCLK/1 = 168/1 = 168 MHz Èç¹ûÊÇ 2£¬¼´HCLKΪSYSCLKµÄ2·ÖƵ£¬HCLK = SYSCLK/2 = 168/2 = 84MHz

×¢Ò⣬HCLKÊÇÊÜSYSCLKÔ¼ÊøµÄ£¬

Èç¹ûÎÒÃÇÅäÖÃSYSCLK = 144M£¬ÄÇô´ËʱHCLK×î´óÖ»ÄÜ´ïµ½ 144MHz¡£

½«AHBʱÖÓ¼ÌÐø·Ö¸î£¬µÃµ½µÄÊÇAPBʱÖÓ£¨Ò²½ÐPCLK£©¡£

¼ÙÉèÔÚ´Ë֮ǰ£¬SYSCLK=168M£¬SYSCLK 2·ÖƵµÃ HCLK = 84M¡££¨HCLK´ú±íAHBʱÖÓ£©

ÓëÇ°ÃæAHBʱÖÓÀàËÆ£¬·½¿òµ×²¿µÄÊý×Ö´ú±íÔ¤·ÖƵÊý£¬·¶Î§1~16. Èç¹ûÊÇ1£¬¼´PCLK£¨APBʱÖÓ£©ÎªHCLKµÄ1·ÖƵ£¬ PCLK = HCLK/1 = 84/1 = 84MHz Èç¹ûÊÇ2£¬¼´PCLKΪHCLKµÄ2·ÖƵ£¬ PCLK = HCLK/2= 84/2 = 42MHz¡£

APBʱÖÓ¿ÉÒÔ¼ÌÐø·Ö¸øAPB×ÜÏßÉϵÄÍâÉ裬Èç¹û¼ÌÐøÅäÖÃÍâÉèµÄÔ¤·ÖƵ£¬¿ÉÒÔ½øÒ»²½ÐÞ¸ÄÍâÉèµÄʱÖÓƵÂÊ¡£

ÀýÈ磺

ÅäÖÃCAN×ÜÏß¡£

µÚÒ»²½£ºÀûÓÃPLL£¬ÎÒÃÇÅäÖà ϵͳʱÖÓ SYSCLK = 168MHz¡£ µÚ¶þ²½£º´ËʱÒÑÓÐSYSCLK=168MHz¡£

ÉèÖÃAHB·ÖƵÊýΪ2£¬¼´µÃ£ºHCLK = SYSCLK/2 = 84MHz¡£

µÚÈý²½£º´ËʱÒÑÓÐHCLK = 84MHz¡£

ÉèÖÃAPB·ÖƵÊýΪ 2£¬¼´µÃ£ºPCLK = HCLK/2 = 42MHz¡£

µÚËIJ½£º´ËʱÒÑÓÐ PCLK = 42MHz¡£

ÉèÖà CanInitStruct.CAN_Prescaler = 7 £¬¼´µÃ CANʱÖÓ = PCLK/7 = 6MHz¡£

ÕâÑù£¬ÕýÈ·ÅäÖÃÁËCANµÄʱÖÓ£¬ÅäÖÃCANʱ²ÅÄܼÆËã³öʵ¼ÊµÄ²¨ÌØÂÊ£¬´Ó¶øʵÏÖͨ