LPC1114通用輸入/輸出埠(GPIO)續

2020-12-06 電子產品世界
前面討論了GPIO數據寄存器和屏蔽結構的用法,這裡再接著討論一下涉及到GPIO的其它寄存器用法。從GPIO定義的結構體中可以看出,除了前面討論的DATA寄存器以外,還剩餘有8個寄存器,偏移地址從0x8000到0x801C,它們都在GPIO設置中起著重要的作用,下面就一一進行討論。

首先看DIR寄存器,其偏移地址為0x8000,屬性為可讀可寫,它負責GPIO引腳的方向,即引腳是用做輸入還是輸出,由該寄存器的設置來決定。雖然DIR寄存器也是32位結構,但由於LPC1114每組只有12個引腳,所以只用了其中的低12位。當位為0 時做輸入,為1時做輸出,12位與12個引腳一一對應,每位設置對應一個引腳。在默認狀態下DIR的值為全0,所以在默認狀態下所有的引腳為輸入狀態。要改變引腳狀態,可通過寫DIR寄存器對應的位來實現。例如,要把埠0的第1、3、5腳設為輸入,其它全為輸出,執行語句「LPC_GPIO0->DIR = 0xFD5;」就可以了。

本文引用地址:http://www.eepw.com.cn/article/201611/316323.htm

接下來看IS寄存器,其偏移地址為0x8004,屬性為可讀可寫,它負責GPIO引腳外部中斷的觸發方式,即引腳響應中斷是電平觸發還是邊沿觸發,由該寄存器的設置來決定。IS寄存器也只用了32位中的低12位,當位為0 時選擇邊沿觸發,為1時選擇電平觸發,12位與12個引腳一一對應,每位設置對應一個引腳。在默認狀態下IS的值為全0,所以在默認狀態下所有的引腳在外部中斷時是邊沿觸發方式。要改變引腳中斷的觸發方式,可通過寫IS寄存器對應的位來實現。例如,要把埠1的第11腳設為電平觸發,執行語句「LPC_GPIO1->IS |= 0x800;」就可以了。另外,在選擇觸發方式時要注意,若選擇了電平觸發,必須要考慮是否會在觸發電平保持期間引發多次外部中斷響應。一般情況下,選擇邊沿觸發方式就不會存在這個問題。

接著看IEV寄存器,其偏移地址為0x800C,屬性為可讀可寫,它負責配合上面的IS寄存器來確定具體的觸發方式。即:若IS配置為邊沿觸發方式,則IEV負責選擇是上跳沿還是下跳沿;若IS配置為電平觸發方式,則IVE負責選擇是高電平觸發還是低電平觸發。IVE寄存器也只用了32位中的低12位,當位為0 時選擇下跳沿觸發或低電平觸發方式,為1時選擇上跳沿觸發或高電平觸發方式,12位與12個引腳一一對應,每位設置對應一個引腳。在默認狀態下IEV的值為全0,所以在默認狀態下所有的引腳在外部中斷時是下跳沿觸發或低電平觸發方式。要改變引腳中斷的具體觸發方式,可通過寫IEV寄存器對應的位來實現。例如,要把埠2的第5腳設為高電平觸發,執行兩句語句「LPC_GPIO1->IS |= 0x020;LPC_GPIO1->IVE |=0x020;」就可以了。另外要強調一點,IEV寄存器必須和IS寄存器配合使用。一般來說,應先配置IS,再配置IVE。

接下來是IBE寄存器,其偏移地址為0x8008,屬性為可讀可寫,它負責GPIO在外部中斷時,用來選擇是否使用雙邊沿觸發方式。在某些特殊應用的地方(比如需要同時捕獲脈衝的上跳沿和下跳沿時),需要在程序中頻繁轉換觸發方式,而在LPC1114中由於有IBE寄存器,所以操作就簡單多了,只要通過設置IBE寄存器來使能對應引腳的雙沿觸發方式就可以了。IBE寄存器也只用了32位中的低12位,當位為0 時關閉雙沿觸發,此時的觸發方式由IEV寄存器決定。為1時開啟雙沿觸發,12位與12個引腳一一對應,每位設置對應一個引腳。在默認狀態下IBE的值為全0,所以在默認狀態下所有的引腳在外部中斷時雙沿觸發方式處於關閉狀態。要使能雙邊沿觸發方式,可通過寫IBE寄存器對應的位來實現。例如,要把埠3的第1腳設為雙沿觸發方式,執行兩句語句「LPC_GPIO2->IS &= ~0x002;LPC_GPIO2->IBE |=0x002;」就可以了。另外有一點需要強調一下,如果某引腳被IBE設置為雙邊沿觸發,則其對應的IEV設置就不起作用了。還有就是IBE寄存器也必須和IS寄存器配合使用,一般來說,應先配置IS,再配置IBE。

下一個是IE寄存器,其偏移地址為0x8010,屬性為可讀可寫,它負責使能GPIO引腳的外部中斷功能。該寄存器也只用了32位中的低12位,當位為0 時中斷功能被屏蔽(即中斷不使能),為1時中斷功能未屏蔽(即中斷使能),12位與12個引腳一一對應,每位設置對應一個引腳。在默認狀態下IE的值為全0,所以在默認狀態下所有的引腳不使用外部中斷(中斷全部被屏蔽)。要使能某引腳的外部中斷功能,可通過寫IE寄存器對應的位來實現。例如,要開啟埠0的第1引腳中斷功能,執行語句「LPC_GPIO0->IE = 0x002;」就可以了。

再下一個是RIS寄存器,其偏移地址為0x8014,屬性為只讀,它負責查詢哪個GPIO引腳上有中斷請求。該寄存器也只用了32位中的低12位,當位為0 時表明對應引腳上沒有外部中斷請求發生,為1時表明對應引腳上有外部中斷請求發生,12位與12個引腳一一對應,每位設置對應一個引腳。在復位時RIS的值為全0,表明所有的引腳復位時都沒有外部中斷請求發生。如果某個引腳上RIS對應的值為1,則表明該引腳上有符合條件的中斷請求發生,此時若對應的IE位也為1(即開啟該引腳的中斷功能),就會發生該引腳的中斷響應。但如果對應的IE位不為1,則不會響應中斷。

接下來是MIS寄存器,其偏移地址為0x8018,屬性為只讀,它和上面的RIS寄存器基本是一樣的,可以用於查詢是否有中斷響應。不同點在於,RIS是只要引腳上滿足中斷觸發條件它對應的位就被置1,但它不一定被響應,因為它有可能被屏蔽了(例如對應的IE位沒有被置1),因此RIS不能判定中斷是否響應了,而只能判定有符合條件的中斷請求發生;但在MIS寄存器中,若相應的位被置1了,則說明這個中斷一定被響應了,因此可以通過程序查詢MIS寄存器的方式來判斷是否有中斷被響應,是哪個引腳上的中斷被響應。其實MIS寄存器表徵的就是屏蔽之後的中斷狀態,它也只用了32位中的低12位,當位為0 時表明對應引腳上沒有外部中斷響應,為1時表明對應引腳上有外部中斷響應,12位與12個引腳一一對應,每位設置對應一個引腳。

最後一個是IC寄存器,其偏移地址為0x801C,屬性為只寫,它用來清除中斷邊沿檢測邏輯。它也只用了32位中的低12位,當位為0 時不起作用,即對外部中斷無任何影響,為1時表明對應引腳上的邊沿觸發埠位被清零,12位與12個引腳一一對應,每位設置對應一個引腳。之所以要設IC寄存器,是因為在中斷響應後(僅邊沿型觸發),在RIS和MIS寄存器中相應的位不會被自動清零,因此在中斷響應後需要在IC寄存器的相應位中寫1來進行清零,以保證後續中斷的正常觸發。

以上是GPIO中各寄存器功能的基本介紹,至於詳細的使用方法,會在後面中斷一章中做詳細討論,這裡先不贅述了。

接下來討論一下GPIO埠引腳的配置。從第一章中已經知道,LPC1114引腳復用的很多,除了第0埠中的3、第2埠中的2~10和第3埠中的4、5引腳外,其餘的引腳都具有第二功能。甚至包括復位端RESET都復用在了GPIO0_0引腳。為了實現引腳上各復用功能間的切換,在處理器內部專門設立了一個引腳配置寄存器IOCON。用戶可以通過IOCON來配置每一個I/O的下列功能特性:

引腳復用功能;

內部上拉/下拉電阻或總線保持功能;

滯後模式;

引腳控制ADC輸入的模擬模式或數字模式;

引腳控制I2C功能的I2C模式。

每個引腳對應一個IOCON寄存,所以對於LPC1114來說,至少應該有42個IOCON寄存器(其實共有46個,多出的4個用於其它功能設置)。一般來說,在使用任何引腳之前都應該先配置一下它所對應的IOCON寄存器,除非用的是引腳的默認功能。下面給出LPC1114中所有引腳的IOCON寄存器情況,如下表。

從表中可以看出,IOCON寄存器的基址為0x40044000,位於內存地圖中的ABP模塊內。它所對應的結構體定義如下:

typedef struct

{

__IO uint32_t PIO2_6; /*!< Offset: 0x000 (R/W) I/O configuration for pin PIO2_6 */

uint32_t RESERVED0[1];

__IO uint32_t PIO2_0; /*!< Offset: 0x008 (R/W) I/O configuration for pin PIO2_0/DTR/SSEL1 */

__IO uint32_t RESET_PIO0_0; /*!< Offset: 0x00C (R/W) I/O configuration for pin RESET/PIO0_0 */

__IO uint32_t PIO0_1; /*!< Offset: 0x010 (R/W) I/O configuration for pin PIO0_1/CLKOUT/CT32B0_MAT2 */

__IO uint32_t PIO1_8; /*!< Offset: 0x014 (R/W) I/O configuration for pin PIO1_8/CT16B1_CAP0 */

uint32_t RESERVED1[1];

__IO uint32_t PIO0_2; /*!< Offset: 0x01C (R/W) I/O configuration for pin PIO0_2/SSEL0/CT16B0_CAP0 */

__IO uint32_t PIO2_7; /*!< Offset: 0x020 (R/W) I/O configuration for pin PIO2_7 */
__IO uint32_t PIO2_8; /*!< Offset: 0x024 (R/W) I/O configuration for pin PIO2_8 */
__IO uint32_t PIO2_1; /*!< Offset: 0x028 (R/W) I/O configuration for pin PIO2_1/nDSR/SCK1 */
__IO uint32_t PIO0_3; /*!< Offset: 0x02C (R/W) I/O configuration for pin PIO0_3 */
__IO uint32_t PIO0_4; /*!< Offset: 0x030 (R/W) I/O configuration for pin PIO0_4/SCL */
__IO uint32_t PIO0_5; /*!< Offset: 0x034 (R/W) I/O configuration for pin PIO0_5/SDA */
__IO uint32_t PIO1_9; /*!< Offset: 0x038 (R/W) I/O configuration for pin PIO1_9/CT16B1_MAT0 */
__IO uint32_t PIO3_4; /*!< Offset: 0x03C (R/W) I/O configuration for pin PIO3_4 */

__IO uint32_t PIO2_4; /*!< Offset: 0x040 (R/W) I/O configuration for pin PIO2_4 */
__IO uint32_t PIO2_5; /*!< Offset: 0x044 (R/W) I/O configuration for pin PIO2_5 */
__IO uint32_t PIO3_5; /*!< Offset: 0x048 (R/W) I/O configuration for pin PIO3_5 */
__IO uint32_t PIO0_6; /*!< Offset: 0x04C (R/W) I/O configuration for pin PIO0_6/SCK0 */
__IO uint32_t PIO0_7; /*!< Offset: 0x050 (R/W) I/O configuration for pin PIO0_7/nCTS */
__IO uint32_t PIO2_9; /*!< Offset: 0x054 (R/W) I/O configuration for pin PIO2_9 */
__IO uint32_t PIO2_10; /*!< Offset: 0x058 (R/W) I/O configuration for pin PIO2_10 */
__IO uint32_t PIO2_2; /*!< Offset: 0x05C (R/W) I/O configuration for pin PIO2_2/DCD/MISO1 */

__IO uint32_t PIO0_8; /*!< Offset: 0x060 (R/W) I/O configuration for pin PIO0_8/MISO0/CT16B0_MAT0 */
__IO uint32_t PIO0_9; /*!< Offset: 0x064 (R/W) I/O configuration for pin PIO0_9/MOSI0/CT16B0_MAT1 */
__IO uint32_t SWCLK_PIO0_10; /*!< Offset: 0x068 (R/W) I/O configuration for pin SWCLK/PIO0_10/SCK0/CT16B0_MAT2 */
__IO uint32_t PIO1_10; /*!< Offset: 0x06C (R/W) I/O configuration for pin PIO1_10/AD6/CT16B1_MAT1 */
__IO uint32_t PIO2_11; /*!< Offset: 0x070 (R/W) I/O configuration for pin PIO2_11/SCK0 */
__IO uint32_t R_PIO0_11; /*!< Offset: 0x074 (R/W) I/O configuration for pin TDI/PIO0_11/AD0/CT32B0_MAT3 */
__IO uint32_t R_PIO1_0; /*!< Offset: 0x078 (R/W) I/O configuration for pin TMS/PIO1_0/AD1/CT32B1_CAP0 */
__IO uint32_t R_PIO1_1; /*!< Offset: 0x07C (R/W) I/O configuration for pin TDO/PIO1_1/AD2/CT32B1_MAT0 */

__IO uint32_t R_PIO1_2; /*!< Offset: 0x080 (R/W) I/O configuration for pin nTRST/PIO1_2/AD3/CT32B1_MAT1 */
__IO uint32_t PIO3_0; /*!< Offset: 0x084 (R/W) I/O configuration for pin PIO3_0/nDTR */
__IO uint32_t PIO3_1; /*!< Offset: 0x088 (R/W) I/O configuration for pin PIO3_1/nDSR */
__IO uint32_t PIO2_3; /*!< Offset: 0x08C (R/W) I/O configuration for pin PIO2_3/RI/MOSI1 */
__IO uint32_t SWDIO_PIO1_3; /*!< Offset: 0x090 (R/W) I/O configuration for pin SWDIO/PIO1_3/AD4/CT32B1_MAT2 */
__IO uint32_t PIO1_4; /*!< Offset: 0x094 (R/W) I/O configuration for pin PIO1_4/AD5/CT32B1_MAT3 */
__IO uint32_t PIO1_11; /*!< Offset: 0x098 (R/W) I/O configuration for pin PIO1_11/AD7 */
__IO uint32_t PIO3_2; /*!< Offset: 0x09C (R/W) I/O configuration for pin PIO3_2/nDCD */

__IO uint32_t PIO1_5; /*!< Offset: 0x0A0 (R/W) I/O configuration for pin PIO1_5/nRTS/CT32B0_CAP0 */
__IO uint32_t PIO1_6; /*!< Offset: 0x0A4 (R/W) I/O configuration for pin PIO1_6/RXD/CT32B0_MAT0 */
__IO uint32_t PIO1_7; /*!< Offset: 0x0A8 (R/W) I/O configuration for pin PIO1_7/TXD/CT32B0_MAT1 */
__IO uint32_t PIO3_3; /*!< Offset: 0x0AC (R/W) I/O configuration for pin PIO3_3/nRI */
__IO uint32_t SCK_LOC; /*!< Offset: 0x0B0 (R/W) SCK pin location select Register */
__IO uint32_t DSR_LOC; /*!< Offset: 0x0B4 (R/W) DSR pin location select Register */
__IO uint32_t DCD_LOC; /*!< Offset: 0x0B8 (R/W) DCD pin location select Register */
__IO uint32_t RI_LOC; /*!< Offset: 0x0BC (R/W) RI pin location Register */
} LPC_IOCON_TypeDef;

上述結構體定義在頭文件LPC11xx.h中。

每一個IOCON寄存器都是32位結構,但它最多只用了其中的低11位,因為根據各引腳功能不同,設置所佔用的位數是不一樣的。為了方便討論,下表給出一個IOCON寄存器的一般位域定義描述,在實際用到引腳的不同設置時,請自行查詢數據手冊。

從上表中可以看出,IOCON寄存器的低三位(0~2位)是用來選擇引腳復用功能的(FUNC),第3位和第4位是用來選擇該引腳的上拉或下拉功能的,第5位是用來選擇是否使用滯後作用的,第7位是用來選擇該引腳是用於數字模式還是模擬模式的(只有埠1的第0~4引腳、第10~11引腳和埠0的第11引腳具有A/D功能,所以其它引腳沒有此設置),第8位和位9位是用來設置引腳的I2C形式的(只有埠0的第4和第5腳具有I2C復用,所以其它引腳沒有此設置)。詳細情況如下表所示。

從上表中可以看出,由於LPC1114各引腳的復用功能數量不一樣,所以對於每一個引腳FUNC位的設置要根據具體引腳來定,不能想當然一概而論。比如,不能認為FUNC為全0時引腳就是使用IO功能,因為埠1的第0~3引腳和埠0的第0、第10~11引腳在FUNC為全0時就不是IO引腳。

下面對引腳配置做幾點說明:

1.若引腳被配置為GPIO,則可用DIR寄存器來設置其方向(即輸入/輸出);若配置為非GPIO功能時,DIR設置無效。

2.若引腳被配置為GPIO,則默認為帶上拉的方式,但無論是上拉還是下拉,都是弱拉式的(片內40k電阻),若要強拉必須外接電阻。

3.滯後作用即為輸入緩衝,它只能在外部引腳電壓為2.5~3.6V時才能使用,當電壓低於2.5V時必須禁能。

4.選擇A/D轉換模式時,內部數字接收部分被斷開,以保證輸入電壓的精度,若只接收高低電平,必須設為數字模式,否則讀不到電平。

5.只有部分引腳有A/D模式和I2C模式(見FUNC表),其它引腳配置為此模式時無效,若引腳配置為A/D模式後,滯後和上/下拉配置無效。

6.所有引腳配置的IOCON在復位時,值為0xD0,表示默認時引腳為復用功能第0組,上拉電阻模式,禁能滯後特性,數字模式。

7.在使用程序配置時,要注意IOCON的第6位(保留位)必須寫1,因其復位值為1。

8.其它四個多於的特殊配置寄存器(SCK_LOC、DSR_LOC、DCD_LOC、RI_LOC)主要用來定位某引動功能的引腳,具體用法請參考手冊。

9.在配置IOCON之前必須把IOCON的時鐘(位於AHBCLKCTRL寄存器中的第16位)打開,否則配置不了,配置完成後再把時鐘關閉,以節約電能。

最後來看幾個例子:

一、要求把埠0的第0腳配置為GPIO口,方向為輸出,帶上拉,輸出值為0。

執行:LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
LPC_IOCON->RESET_PIO0_0 = 0xD1;
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);
LPC_GPIO0->DIR |= 0x001;
LPC_GPIO0->MASKED_ACCESS[1] = 0x000;

二、要求把埠1的第1腳配置為A/D輸入口。

執行:LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
LPC_IOCON->R_PIO1_1= 0x42;
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);
三、要求把埠1的第3腳配置為CT32B1_MAT2模式。

執行:LPC_SYSCON->SYSAHBCLKCTRL |= (1<<16);
LPC_IOCON->SWDIO_PIO1_3= 0xD3;
LPC_SYSCON->SYSAHBCLKCTRL &= ~(1<<16);


相關焦點

  • 基於LPC1114的學習型紅外遙控器
    找到函數  功能:(設置 GPIO口方向),參數(埠號,位,輸入或輸出(0入1出))  GPIOSetDir( PORT0, 1, 0 );  和  GPIOSetValue()  一個是設置埠方向,一個是設置輸出的值,直接調用就可以了。
  • LPC1114外部中斷
    下面就來討論一下LPC1114外部中斷的使用情況。LPC1114的每一個引腳都可以響應一個外部中斷,所以有多少個引腳就有多少個外部中斷。但LPC1114的中斷系統非常強大,外部中斷只是它其中的一小部分。因此,要用好外部中斷,就必須先來了解LPC1114的整個中斷系統。下面就來看一下它的中斷系統。
  • NXP_LPC1114_LED燈程序
    #include "LPC11XX.h"#include "gpio.h"#include "main.h"void Delay_Sec(u8 Time){u16 i;while(Time){for(i=0;i<3000000;i++);Time
  • LPC1114時鐘配置
    在LPC1114中,只有通用輸入輸出埠(GPIO)需要AHB。為了給不同速度的模塊(如內核、存儲器、APB等)提供時鐘,需要對SYSAHBCLKDIV寄存器進行操作,以對主時鐘進行分頻。下面給出SYSAHBCLKDIV寄存器的位結構,如下表所示。
  • 嵌入式Linux設備驅動開發之:GPIO驅動程序實例
    I/O(GPIO)埠管腳,包括GPIO8個埠組,分別為GPA(23個輸出埠)、GPB(11個輸入/輸出埠)、GPC(16個輸入/輸出埠)、GPD(16個輸入/輸出埠)、GPE(16個輸入/輸出埠)、GPF(8個輸入/輸出埠)、GPH(11個輸入/輸出埠)。
  • LPC1114系統定時器(SysTick)
    在LPC1114內部有一個特殊的定時器——系統定時器(SysTick),它位於Cortex-M0內核裡面,是ARM內核的一部分,主要用來給作業系統提供時間片輪轉的定時,一般固定為10ms的定時,所以中文也稱它為「嘀噠」定時器。
  • stm32單片機中使用GPIO口模擬PWM輸出解析
    gpio   General Purpose Input Output (通用輸入/輸出)簡稱為GPIO,或總線擴展器,人們利用工業標準I2C、SMBus或SPI接口簡化了I/O口的擴展。當微控制器或晶片組沒有足夠的I/O埠,或當系統需要採用遠端串行通信或控制時,GPIO產品能夠提供額外的控制和監視功能。
  • LPC1114外中斷應用
    LPC1114微處理器每一個GPIO都可以中斷,不過在設計中斷時需要注意,下面就舉例說明:/*************************************************************************************** global variable*******************
  • PLC輸入埠和輸出埠接線的介紹和常見的接線類型
    打開APP PLC輸入埠和輸出埠接線的介紹和常見的接線類型 易水寒 發表於 2018-11-03 11:38:41 PLC的正確接線是PLC發揮功能的前提條件,熟練的掌握PLC輸入埠和輸出埠的接線是每一個電力作業人員所必需的。 一般情況下,PLC電源輸入端接AC220V,是為了給PLC提供運行電源。PLC輸出電源埠一般為DC24V,是PLC自帶的電源輸出。PLC使用過程中,輸入端和輸出端正確的接線是非常重要,接線正確是PLC工作的前提。
  • 基於LPC1114的智能節能LED檯燈控制器設計
    LED檯燈使用距離和亮度進行對比,從而調節LPC1114的PWM輸出佔空比,驅動LED檯燈驅動器,在保證LED檯燈使用視野亮度恆定的情況下,實現人走燈滅和根據環境光線強度智能調節LED檯燈亮度兩大功能,實現智能節能效果。
  • MIO與EMIO的關係解析 GPIO、MIO、EMIO的區別
    MIO點亮PS端LED 從電路中看得很清楚,這兩個LED直接連接在MIO0和MIO13上,所以直接在這兩個埠輸出高低電平就可以控制燈閃爍了=XST_SUCCESS)//初始化成功return XST_FAILURE; 然後就是定義gpio口的屬性,包括輸入輸出和埠使能: XGpioPs_SetDirectionPin(&xgpio, LED1, 1);//outputXGpioPs_SetDirectionPin(&xgpio, LED2, 1);// XGpioPs_SetOutputEnablePin
  • LPC1114/LPC11U14和LPC1343對比學習(八)USB
    LPC1114沒有USB功能,所以這裡只能針對LPC1343和LPC11U14進行說明。對於這兩種有USB功能的晶片其還是區 別,LPC1343內部集成了USB驅動,而LPC11U14沒有此功能,所以LPC1343USB開發比較簡單一點,價格也要貴一點。
  • LPC1114的簡易數碼相框設計
    摘要:以NXP公司基於ARM Cortex—M0的LPC1100系列MCU LPC1114為控制核心,配合SD存儲卡、外圍電路和TFT液晶顯示屏,提出了一種簡易數碼相框的設計方案。
  • plc輸入輸出實物接線圖
    plc輸入輸出實物接線圖   1、輸入模塊   輸入電路中有RC濾波電路(上圖中R1和C),用來防止輸入觸點抖動或者幹擾脈衝引起的誤動作。   PLC輸入端和輸出端接線   一、輸入埠常見的接線類型和對象:   PLC輸入埠一般是輸入:   1、開關量信號:   按鈕,行程開關,轉換開關,接近開關,撥碼開關等等。
  • PLC輸出埠元器件~
    在之前的文章中,我們已經介紹過輸入埠元器件,那麼這次介紹一下輸出埠元器件。輸出埠主要是向外部發出開關量信號、數據量信號和脈衝信號去控制外部負載的。#PLC學習#PLC輸出埠有三種輸出方式:繼電器輸出、電晶體輸出和可控矽輸出。
  • NXP_LPC1114延時函數集合
    #include "LPC11XX.h"#include "gpio.h"#include "timer16.h"/*系統時鐘配置為48MHz,AHB不分頻,一次定時器時鐘為48Mhz,因此得出以下分頻值,匹配值*/void Delay_Us(unsigned int DelayTimes){/* *
  • STM32的GPIO工作原理(附電路圖詳細分析)
    STM32引腳說明GPIO是通用輸入/輸出埠的簡稱,是STM32可控制的引腳。GPIO的引腳與外部硬體設備連接,可實現與外部通訊、控制外部硬體或者採集外部硬體數據的功能。STM32F103ZET6晶片為144腳晶片,包括7個通用目的的輸入/輸出口(GPIO)組,分別為GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同時每組GPIO口組有16個GPIO口。通常簡略稱為PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x為0-15。
  • GPIO相關寄存器配置詳解
    寄存器分別如下:一個埠模式寄存器(GPIOx_MODER)一個埠輸出類型寄存器(GPIOx_OTYPER)一個埠輸出速度寄存器(GPIOx_OSPEEDR)一個埠上拉下拉寄存器(GPIOx_PUPDR)
  • PLC的輸入端,輸出端常見的接線類型
    目前,PLC在工業生產和自動化控制中是使用率非常高的集中控制設備,PLC代替了繁重的繼電器櫃,交流接觸器櫃等,逐漸的在生產和控制中普及使用,PLC的正確接線是PLC發揮功能的前提條件,熟練的掌握PLC輸入埠和輸出埠的接線是每一個電力作業人員所必需的。
  • 分析一下PLC的輸入端,輸出端常見的接線類型
    目前,plc在工業生產和自動化控制中是使用率非常高的集中控制設備,PLC代替了繁重的繼電器櫃,交流接觸器櫃等,逐漸的在生產和控制中普及使用,PLC的正確接線是PLC發揮功能的前提條件,熟練的掌握PLC輸入埠和輸出埠的接線是每一個電力作業人員所必需的。