NUC140之IO口
阿新 • • 發佈:2019-01-12
NUC140的I/O的作用,無非是輸入、輸出、雙向和外設功能,這些功能是複用的,當上電未初始化時,根據晶片手冊,
NUC140的I/0口預設輸出高電平。
I/O的使用比較基礎,初始化上述幾個功能然後再使用即可,但是有幾點需要注意。
1.使用外設功能,例如UART等,要先將對應的引腳初始化為UART功能;
2.如果I/O設定為雙向功能,在讀取資料前,最好先寫1,再讀。
這樣做是為了防止在讀之前有寫0的操作,這樣再讀資料,無論輸入高低,
都會被拉低。
下面看程式。
/***************************************** *檔名:startup_pins.c * *功能:初始化引腳設定及部分引腳 * ******************************************/ #include "initialize_pins.h" /************************************************** *函式名: initialize_pins * *功能: 初始化引腳 * *出口引數:無 * *入口引數:無 * *************************************************/ void initialize_pins (void) { DrvGPIO_InitFunction (E_FUNC_ADC0); //PA.0設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC1); //PA.1設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC2); //PA.2設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC3); //PA.3設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC4); //PA.4設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC5); //PA.5設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC6); //PA.6設定為ADC DrvGPIO_InitFunction (E_FUNC_ADC7); //PA.7設定為ADC DrvGPIO_InitFunction (E_FUNC_UART0_RX_TX); //PB.0,PB.1設定為串列埠 DrvGPIO_Open (E_GPB, 2, E_IO_OUTPUT); //PB.2設定為輸出I/O DrvGPIO_Open (E_GPB, 3, E_IO_OUTPUT); //PB.3設定為輸出I/O DrvGPIO_Open (E_GPB, 4, E_IO_QUASI); //PB.4設定為雙向I/O DrvGPIO_Open (E_GPB, 5, E_IO_QUASI); //PB.5設定為雙向I/O DrvGPIO_Open (E_GPB, 6, E_IO_QUASI); //PB.6設定為雙向I/O DrvGPIO_Open (E_GPB, 7, E_IO_OUTPUT); //PB.7設定為輸出I/O DrvGPIO_Open (E_GPB, 10, E_IO_OUTPUT); //PB.10設定為輸出I/O DrvGPIO_InitFunction (E_FUNC_PWM4); //PB.11設定為PWM DrvGPIO_Open (E_GPB, 13, E_IO_OUTPUT); //PB.13設定為輸出 I/O DrvGPIO_Open (E_GPC, 5, E_IO_OUTPUT); //PC.5設定為輸出I/O DrvGPIO_Open (E_GPD, 9, E_IO_QUASI); //PD.9設定為雙向I/O DrvGPIO_Open (E_GPD, 10, E_IO_QUASI); //PD.10設定為雙向I/O DrvGPIO_Open (E_GPD, 11, E_IO_QUASI); //PD.11設定為雙向I/O DrvGPIO_Open (E_GPD, 12, E_IO_QUASI); //PD.12設定為雙向I/O DrvGPIO_Open (E_GPD, 13, E_IO_QUASI); //PD.13設定為雙向I/O DrvGPIO_Open (E_GPE, 4, E_IO_OUTPUT); //PE.4設定為輸出I/O DrvGPIO_InitFunction ( E_FUNC_PWM5 ); //PE.5設定為PWM DrvGPIO_Open (E_GPE, 6, E_IO_INPUT); //PE.6設定為輸入I/O DrvGPIO_Open (E_GPE, 7, E_IO_OUTPUT); //PE.7設定為輸出I/O DrvGPIO_Open (E_GPE, 8, E_IO_OUTPUT); //PE.8設定為輸出I/O DrvGPIO_Open (E_GPE, 13, E_IO_OUTPUT); //PE.13設定為輸出I/O DrvGPIO_Open (E_GPE, 14, E_IO_OUTPUT); //PE.14設定為輸出I/O DrvGPIO_Open (E_GPE, 15, E_IO_OUTPUT); //PE.15設定為輸出I/O DrvGPIO_SetBit (E_GPE, 15); //PE.15置1 DrvGPIO_SetBit (E_GPE, 14); //PE.14置1 DrvGPIO_SetBit (E_GPE, 13); //PE.13置1 DrvGPIO_SetBit (E_GPB, 13); //PB.13置1 DrvGPIO_ClrBit (E_GPB, 7); //PB.7置0 DrvGPIO_SetBit (E_GPE, 8); //PE.8置1 DrvGPIO_SetBit (E_GPE, 7); //PE.7置1 DrvGPIO_ClrBit (E_GPB, 2); //PB.2置0 DrvGPIO_ClrBit (E_GPB, 3); //PB.3置0 /*濾波器選擇*/ if (channel_space == 1) //25K通道間隔 { DrvGPIO_ClrBit (E_GPC, 5); //PC.5置0 } else //8.33K { DrvGPIO_SetBit (E_GPC, 5); //PC.5置1 } DrvGPIO_SetBit (E_GPB, 10); //PB.10置1 DrvGPIO_ClrBit (E_GPE, 4); //PE.4置0 } 標頭檔案為 #ifndef initialize_pins_h #define initialize_pins_h #include "DrvGPIO.h" #include "common_variables.h" extern void initialize_pins (void); //初始化引腳函式 #endif