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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM8L探索套件學(xué)習(xí)筆記-GPIO端口操作(一)

          STM8L探索套件學(xué)習(xí)筆記-GPIO端口操作(一)

          作者: 時間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          STM8與STM32一樣提供了固件庫函數(shù),方便用戶快速開發(fā),不需要花費很多時間去查寄存器。不過沒有STM32的庫完善,給的說明文檔是chm格式的,名字是stm8l15x_stdperiph_lib_um.chm,這個官網(wǎng)有下載,今天按照官方給的模板自己做個模板文件夾,方便后期的移植,這樣就不要再重復(fù)設(shè)置了。首先我們看看GPIO模塊,在用固件庫之前先了解下GPIO里面的大體的寄存器,方便后期使用固件庫。缺點是你所以輸入的參數(shù)都會檢測是否符合規(guī)范,必須得按照庫函數(shù)里面定義的參數(shù)寫。
          GPIO寄存器有:輸出寄存器(ODR),輸入寄存器(IDR),方向寄存器(DDR),控制寄存器1(CR1)和控制寄存器2(CR2).后面三個寄存器組和可以配置為8種GPIO的模式,如下圖:


          而固件庫函數(shù)給出了8中模式,在上面的基礎(chǔ)上加入了輸出高/輸出低電平的狀態(tài)。

          GPIO_Mode_In_FL_No_IT浮空輸入無中斷Input floating, no external interrupt
          GPIO_Mode_In_PU_No_I上拉輸入無中斷Input pull-up, no external interrupt
          GPIO_Mode_In_FL_IT浮空輸入有中斷Input floating, external interrupt
          GPIO_Mode_In_PU_IT上拉輸入有中斷Input pull-up, external interrupt
          GPIO_Mode_Out_OD_Low_Fast
          開漏-輸出低-高速
          Output open-drain, low level, 10MHz
          GPIO_Mode_Out_PP_Low_Fast
          推挽-輸出低-高速
          Output push-pull, low level, 10MHz
          GPIO_Mode_Out_OD_Low_Slow
          開漏-輸出低-低速
          Output open-drain, low level, 2MHz
          GPIO_Mode_Out_PP_Low_Slow
          推挽-輸出低-低速
          Output push-pull, low level, 2MHz
          GPIO_Mode_Out_OD_HiZ_Fast
          開漏-輸出高阻-高速
          Output open-drain, high-impedance level, 10MHz
          GPIO_Mode_Out_PP_High_Fast
          推挽-輸出高-高速
          Output push-pull, high level, 10MHz
          GPIO_Mode_Out_OD_HiZ_Slow
          開漏-輸出高阻-低速
          Output open-drain, high-impedance level, 2MHz
          GPIO_Mode_Out_PP_High_Slow
          推挽-輸出高-低速
          Output push-pull, high level, 2MHz
          其他的一些函數(shù)可以參考固件庫:

          下面是GPIO操作的應(yīng)用,GPIO寫操作---板上的兩個LED燈閃爍的代碼
          void main(void)
          {
          /* Infinite loop */
          GPIO_Init(LED1_PORT, LED1_PIN, GPIO_Mode_Out_PP_Low_Fast);
          GPIO_Init(LED2_PORT, LED2_PIN, GPIO_Mode_Out_PP_Low_Fast);
          while (1)
          {
          GPIO_ToggleBits(LED1_PORT, LED1_PIN);
          Delay(0xFFFF);
          GPIO_ToggleBits(LED2_PORT, LED2_PIN);
          Delay(0xFFFF);

          }
          }
          GPIO讀操作---查詢按鍵點亮LED
          void main(void)
          {
          /* Infinite loop */
          GPIO_Init(LED1_PORT,LED1_PIN,GPIO_Mode_Out_PP_Low_Fast);
          //輸出低電平-高速10M
          GPIO_Init(KEY_PORT,KEY_PIN,GPIO_Mode_In_FL_No_IT);
          //輸入浮空-無中斷
          while (1)
          {
          if(GPIO_ReadInputDataBit(KEY_PORT,KEY_PIN))
          GPIO_WriteBit(LED1_PORT,LED1_PIN,RESET);
          else
          GPIO_WriteBit(LED1_PORT,LED1_PIN,SET);
          }
          }


          評論


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