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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM8學(xué)習(xí)筆記(一):GPIO

          STM8學(xué)習(xí)筆記(一):GPIO

          作者: 時(shí)間:2016-11-24 來源:網(wǎng)絡(luò) 收藏
          昨天晚上焊好了一塊STM8最小系統(tǒng)板,能跑,能下載

          晚上弄了一晚上。。。什么也沒有收獲

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

          可能受STM32的影響,一直想用它本身的庫,結(jié)果一直郁悶了半天

          不行,不用它本身的庫

          上網(wǎng)看了下一個(gè)操作LED的例程

          自己看了下幾個(gè)GPIO的寄存器

          主要有下面幾個(gè)

          1、端口 x 輸出數(shù)據(jù)寄存器 (Px_ODR)

          在輸出模式下,寫入寄存器的數(shù)值通過鎖存器加到相應(yīng)的引腳上。讀ODR寄存器,返回之前鎖存的寄存器值。
          在輸入模式下,寫入ODR的值將被鎖存到寄存器中,但不會(huì)改變引腳狀態(tài)。ODR寄存器在復(fù)位后總是為0。位操作指令(BSET, BRST) 可以用來設(shè)置DR寄存器來驅(qū)動(dòng)相應(yīng)的引腳,但不會(huì)影響到其他引腳。

          2、端口 x 輸入寄存器 (Px_IDR)

          IDR[7:0]:端口輸入數(shù)據(jù)寄存器位
          不論引腳是輸入還是輸出模式,都可以通過該寄存器讀入引腳狀態(tài)值。該寄存器為只讀寄存器。
          0:邏輯低電平
          1:邏輯高電平

          3、端口 x 數(shù)據(jù)方向 (Px_DDR)

          這些位可通過軟件置1或置0,選擇引腳輸入或輸出
          0: 輸入模式
          1: 輸出模式

          4、端口 x 控制寄存器 1 (Px_CR1)

          在 輸入模式時(shí)(DDR=0):
          0:浮空輸入
          1::帶上拉電阻輸入
          在 輸出模式時(shí)(DDR=1):
          0:模擬開漏輸出(不是真正的開漏輸出)
          1: 推挽輸出, 由CR2相應(yīng)的位做輸出擺率控制

          5、端口 x 控制寄存器 2 (Px_CR2)在 輸入模式時(shí)(DDR=0):

          0: 禁止外部中斷
          1: 使能外部中斷
          在 輸出模式時(shí)(DDR=1):
          0:輸出速度最大為2MHZ.
          1:輸出速度最大為10MHZ

          我用的IDE是STVD,新建工程后,把STM8S208R.h的庫文件放在剛剛新建的文件里

          下面就是編程了

          這個(gè)是我寫的代碼。。。。比較爛

          ///////////////////////////////////////////////////////////

          /*============================================================================*/
          /* PROJECT: LED Control by timer OC */
          /* MODULE: main.c */
          /* COMPILER: STM8 Cosmic C Compiler */
          /* DATE: Feb 2009 */
          /*----------------------------------------------------------------------------*/
          /* DESCRIPTION: Demonstration firmware for STM8 Mini Kit */
          /* Control LED blink, on/off/, brightness. */
          /*============================================================================*/
          /******************************************************************************
          *
          * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
          * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
          * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY
          * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
          * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE
          * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
          *
          * COPYRIGHT 2008 STMicroelectronics
          ******************************************************************************
          */

          /* Includes ------------------------------------------------------------------*/
          #include "stm8s208r.h" /* Registers and memory mapping file. */

          /******************************************************************************/
          /* Function definitions */
          /******************************************************************************/
          /* -------------------------------------------------------------------------- */
          /* ROUTINE NAME: GPIO_Init */
          /* INPUT/OUTPUT: None. */
          /* DESCRIPTION: Initialize GPIOs. */
          /* IN: None. */
          /* OUT: None. */
          /* -------------------------------------------------------------------------- */
          void GPIO_Init(void)
          {
          /* LED IO Configuration */
          /* LD3: PD3 */
          /* LD2: PD1 */
          /* LD1: PD0 */
          PD_DDR |= 0xFF; /* Output. */
          PD_CR1 |= 0xFF; /* PushPull. */
          PD_CR2 = 0x00; /* Output speed up to 2MHz. */
          PD_ODR |= 0x55;//IO口要輸出的數(shù)據(jù)
          }
          /* -------------------------------------------------------------------------- */
          /* ROUTINE NAME: CLK_Init */
          /* INPUT/OUTPUT: None. */
          /* DESCRIPTION: Initialize the clock source */
          /* -------------------------------------------------------------------------- */
          void CLK_Init(void)
          {
          /* Configure HSI prescaler*/
          CLK_CKDIVR &= ~0x10; /* 01: fHSI= fHSI RC output/2. */

          /* Configure CPU clock prescaler */
          CLK_CKDIVR |= 0x01; /* 001: fCPU=fMASTER/2. */
          }
          /* -------------------------------------------------------------------------- */
          /* ROUTINE: main */
          /* main entry */
          /* -------------------------------------------------------------------------- */
          void main ( void )
          {
          while(1)
          {
          CLK_Init();
          GPIO_Init();
          }
          }
          /*---------------------------- End of file -----------------------------------*/

          ////////////////////////////////////////////////////////////////

          這個(gè)只是實(shí)現(xiàn)很簡單的功能

          路漫漫其修遠(yuǎn)兮,路還長著呢



          關(guān)鍵詞: STM8學(xué)習(xí)筆記GPI

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