·¢²¼Ê±¼ä : ÐÇÆÚ¶þ ÎÄÕÂ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ʱ²ÅÄܼÆËã³öʵ¼ÊµÄ²¨ÌØÂÊ£¬´Ó¶øʵÏÖͨ