<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 智林STM32程序源代碼的分析和整理02

          智林STM32程序源代碼的分析和整理02

          作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò) 收藏
          一、STM32時(shí)鐘配置程序分析

          1、RCC

          本文引用地址:http://www.ex-cimer.com/article/201611/322959.htm

          RCC是指Reset and Clock Control復(fù)位和時(shí)鐘控制。主要寄存包括控制、配置、中斷、外設(shè)復(fù)位、外設(shè)時(shí)鐘使能、復(fù)位狀態(tài)寄存器。

          內(nèi)核的工作時(shí)鐘為SysClk,它的來(lái)源有三種:外部時(shí)鐘HSE、內(nèi)部時(shí)鐘HSI和PLL輸出時(shí)鐘。當(dāng)然PLL的時(shí)鐘也是來(lái)自于外部或內(nèi)部時(shí)鐘。

          2、我的源程序

          void RCC_Config(void){//時(shí)鐘配置,采用外部時(shí)鐘和PLL

          ErrorStatus HSEStartUpStatus;

          RCC_DeInit();

          HSEStartUpStatus = RCC_WaitForHSEStartUp();

          //如果外部時(shí)鐘起振成功

          if(HSEStartUpStatus == SUCCESS)

          {

          FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

          FLASH_SetLatency(FLASH_Latency_2);

          RCC_HCLKConfig(RCC_SYSCLK_Div1);// HCLK = SYSCLK AHB時(shí)鐘等于系統(tǒng)時(shí)鐘

          RCC_PCLK2Config(RCC_HCLK_Div1);

          RCC_PCLK1Config(RCC_HCLK_Div2);// PCLK1 = HCLK/2 APB1時(shí)鐘等于1/2AHB時(shí)鐘

          RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);

          RCC_PLLCmd(ENABLE);

          //等待PLL準(zhǔn)備好

          while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);

          RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//選擇PLL作為系統(tǒng)時(shí)鐘

          while(RCC_GetSYSCLKSource() != 0x08);

          RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);//使能APB1上的TIM2

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能三個(gè)IO口時(shí)鐘

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);//使能IO復(fù)用功能時(shí)鐘

          RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能串口1時(shí)鐘

          }

          二、NVIC的配置

          1、NVIC

          它是指嵌套向量中斷控制器。中斷的數(shù)目與向量表的大小相關(guān)。加上保留的,每個(gè)向量占據(jù)4個(gè)字節(jié),一共占據(jù)0x0000,00EC個(gè)字節(jié)。NVIC的配置與具體中斷相關(guān),都在具體器件里配置,所以程序里的代碼很少。

          2、源代碼

          void NVIC_Config(void){

          #ifdefVECT_TAB_RAM

          NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);

          #else

          NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

          #endif

          NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//STM32共有四位數(shù)字進(jìn)行優(yōu)先級(jí)選擇

          }



          關(guān)鍵詞: 智林STM32程序源代

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();