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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > STM32F103的復位及時鐘控制模塊頭文件

          STM32F103的復位及時鐘控制模塊頭文件

          作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
          在處理器正常工作前,肯定要做一些初始化工作,其中最主要的一個就是初始化各種時鐘。通過對STM32F103復位及時鐘控制(RCC)模塊分析之后,自己寫了一個RCC的頭文件,這樣使用起來更方便。頭文件中首先定義了最基本的幾個寄存器,然后再對每個寄存器中的域使用結構體做了定義,可以直接使用寄存器中的位來操作。注意設置系統(tǒng)時鐘時要先設置好FLASH的等待周期,不然程序就可能會跑飛。
          該測試工程是在以前的GPIO實驗的基礎上增加系統(tǒng)時鐘初始化代碼,設置系統(tǒng)時鐘為72M。通過流水燈可以看到,比未配置系統(tǒng)時鐘之前(8M)流水燈的速度快了很多。
          從這里下載完整的測試工程:
          系統(tǒng)時鐘初始化的代碼如下:
          //以下時鐘配置為最高性能
          void SystemClockInit(void)
          {
          //設置flash等待周期為2,否則設置為72M系統(tǒng)時鐘時就會跑飛
          FLASH_ACR=0x32;
          pbRCC_CR->HSEON=1; //使能外部高速時鐘
          while(!(pbRCC_CR->HSERDY)); //等待外部高速時鐘穩(wěn)定
          pbRCC_CFGR->MCO=0; //MCO無時鐘輸出
          pbRCC_CFGR->USBPRE=1; //USB時鐘1.5分頻
          pbRCC_CFGR->PLLMUL=9-2; //PLL倍頻設置為9倍(外部時鐘8M,PLL輸出72M)
          pbRCC_CFGR->PLLXTPRE=0; //HSE不分頻
          pbRCC_CFGR->PLLSRC=1; //HSE選作做為PLL時鐘源輸入
          pbRCC_CFGR->ADCPRE=0; //ADC時鐘2分頻
          pbRCC_CFGR->PPRE2=1+6; //APB2設置為1分頻
          pbRCC_CFGR->PPRE1=2+6; //APB1設置為2分頻
          pbRCC_CFGR->HPRE=0; //AHB無分頻
          pbRCC_CR->PLLON=1; //啟動PLL
          while(!(pbRCC_CR->PLLRDY)); //等待PLL穩(wěn)定
          pbRCC_CFGR->SW=2; //選擇PLL輸出為時鐘源
          //pbRCC_AHBENR->SRAMEN=1;
          //pbRCC_AHBENR->FLITFEN=1;
          //IO口第二功能時鐘使能
          pbRCC_APB2ENR->AFIOEN=1;
          //各通用IO口時鐘使能
          pbRCC_APB2ENR->IOPAEN=1;
          pbRCC_APB2ENR->IOPBEN=1;
          pbRCC_APB2ENR->IOPCEN=1;
          pbRCC_APB2ENR->IOPDEN=1;
          pbRCC_APB2ENR->IOPEEN=1;
          //ADC時鐘使能
          pbRCC_APB2ENR->ADC1EN=1;
          pbRCC_APB2ENR->ADC2EN=1;
          //定時器1時鐘使能
          pbRCC_APB2ENR->TIM1EN=1;
          //SPI1時鐘使能
          pbRCC_APB2ENR->SPI1EN=1;
          //串口1時鐘使能
          pbRCC_APB2ENR->USART1EN=1;
          //定時器2、3、4時鐘使能
          pbRCC_APB1ENR->TIM2EN=1;
          pbRCC_APB1ENR->TIM3EN=1;
          pbRCC_APB1ENR->TIM4EN=1;
          //窗口看門狗時鐘不使能
          pbRCC_APB1ENR->WWDGEN=0;
          //SPI2時鐘使能
          pbRCC_APB1ENR->SPI2EN=1;
          //串口2、3時鐘使能
          pbRCC_APB1ENR->USART2EN=1;
          pbRCC_APB1ENR->USART3EN=1;
          //I2C1、2時鐘使能
          pbRCC_APB1ENR->I2C1EN=1;
          pbRCC_APB1ENR->I2C2EN=1;
          //USB時鐘使能
          pbRCC_APB1ENR->USBEN=1;
          //CAN時鐘使能
          pbRCC_APB1ENR->CANEN=1;
          //備份接口時鐘使能
          pbRCC_APB1ENR->BKPEN=1;
          //電源接口時鐘使能
          pbRCC_APB1ENR->PWREN=1;
          //外部低速時鐘啟動
          pbRCC_BDCR->LSEON=1;
          pbRCC_BDCR->LSEBYP=0;
          pbRCC_BDCR->RTCSEL=1; //選擇外部時鐘為RTC時鐘
          }



          評論


          技術專區(qū)

          關閉
          看屁屁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); })();