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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32F10XX之應(yīng)用筆記-GPIO設(shè)置

          STM32F10XX之應(yīng)用筆記-GPIO設(shè)置

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          STM32F10XX會(huì)根據(jù)封裝不同而引腳數(shù)不同;36腳(A 半B)48腳(A B) 64腳(ABC) 100腳(ABCDE) 144腳(ABCDEFG);STM32F10XX最多就是有7組16位的IO口;當(dāng)然IO口越多能完成的功能就越多,能完完全全發(fā)揮STM32F10XX所有外設(shè)功能的只有144腳封裝。
          ST公司為STM32系列的芯片編寫了固件庫(kù),給我們開發(fā)帶來了很多方便;所以大家都覺得它好用,最重要的原因就是這了。但是要完全玩透它還是得去看看底層是怎么設(shè)置寄存器的,這對(duì)我們完成某個(gè)功能有更深刻的了解。
          首先從設(shè)置GPIO開始,要使用一個(gè)IO口得有兩個(gè)過程:一是使能IO口組的時(shí)鐘;二是設(shè)置IO口的方向。牽扯到的寄存器有CCR_APBXENR,GPIOX_CRL,GPIOX_CRH,GPIOX_IDR,GPIOX_ODR,GPIOX_BSRR,GPIOX_BRR。ST公司已經(jīng)把這些宏定義已經(jīng)做好了,相應(yīng)的名字對(duì)應(yīng)的就是寄存器的名字。做過RAM9開發(fā)的都知道宏定義一邊都是這樣的:
          #define REGXXXXX (*(volatile 數(shù)據(jù)類型*)(數(shù)據(jù)類型)0xXXXXXXXXXX))
          但是呢,用STM32開發(fā)時(shí)這些在頭文件里已經(jīng)做好了(stm32f10x.h)。我就以GPIOA的Pin_0作為輸出引腳為例:
          庫(kù)函數(shù):
          void GPOIA_CONFIG(void)
          {
          GPIO_InitTypeDef GPIO_InitStructure;
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //開啟GPIOA的時(shí)鐘
          GPIO_InitStructure.GPIO_Pin =GPIO_Pin_0;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽輸出
          GPIO_Init(GPIOA, &GPIO_InitStructure);
          }
          寄存器:
          CCR->APB2ENR
          GPIOA->CRL
          void GPOIA_CONFIG(void)
          {
          CCR->APB2ENR |=(1<<2);//開啟GPIOA的時(shí)鐘
          GPIOA->CRL &=0XFFFFFFF0;
          GPIOA->CRL |=0X000000003;//Pin_0推挽輸出
          }
          一看都會(huì)覺得寄存的簡(jiǎn)單;庫(kù)函數(shù)更好讀也更讓別人理解;這就仁者見仁智者見智了,我自己還是更喜歡寄存器,因?yàn)楸C苄砸眯◣?kù)函數(shù)只要是編過程的一眼就讀懂了),當(dāng)然是團(tuán)隊(duì)合作肯定要用庫(kù)函數(shù)咯。


          關(guān)鍵詞: STM32F10XXGPIO設(shè)

          評(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); })();