GPIODirModeSet

denchetmatthoi

Trứng gà
Cho em hỏi về GPIODirModeSet. Trong bài giảng có 2 ví dụ nhỏ
1.Cấu hình PinPF1 làm output và xuất gtri mức 1
//PortF Enable
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Config GPIO PF1 as an Output
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, GPIO_PIN_1);
//Write value
GPIOPinWrite(GPIO_PORTF_BASE, GPIO_PIN_1, 0xFF);
2.Cấu hình PinPF4 làm input và đọc giá trị
//Enable PortF
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
//Config Pin PF4 as a digital input, 2mA drive, pull -up resistor
GPIODirModeSet(GPIO_PORTF_BASE, SW1|SW2, GPIO_DIR_MODE_IN);
GPIOPadConfigSet(GPIO_PORTF_BASE, SW1|SW2, GPIO_STRENGTH_2MA,
GPIO_PIN_TYPE_STD_WPU);
//Read PF4
read=GPIOPinRead(GPIO_PORTF_BASE, GPIO_PIN_4);
Tại sao trong ví dụ 1 thì không cần dùng tới GPIODirModeSet còn ví dụ 2 thì vẫn dùng bình thường:-(

Em cám ơn nhìu :1cool_byebye:
 

tranantoni

Thành Viên PIF
Vài dòng giải thích như sau::6cool_boss: :6cool_boss:
  • ROM_GPIODirModeSet để thiết lập chiều (input hoặc output) cho 1 hoặc nhiều pin của port. Có 3 giá trị tham số có thể dùng là GPIO_DIR_MODE_IN, GPIO_DIR_MODE_OUT để thiết lập 1 hay nhiều chân là input/output qua sự điều khiển của chương trình (software controlled) và GPIO_DIR_MODE_HW để thiết lập cho 1 hay nhiều chân được đặt dưới sự điều khiển của hardware (hardware controlled).
  • ROM_GPIOPadConfigSet để thiết lập config cho I/O pin. Ví dụ về hàm này:
ROM_GPIOPadConfigSet(GPIO_PORTF_BASE, SW1|SW2, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD) //Hàm này thiết lập config 2 chân tại SW1 và SW2 của port F là kiểu push-pull GPIO có khả năng chịu được dòng 2mA.

ROM_GPIOPinTypeGPIOInput/ROM_GPIOPinTypeGPIOOutput là hai hàm TI viết sẵn cho các bạn bao gồm tất cả các bước để config 1 chân là input hay output. Bên trong 2 hàm ROM_GPIOPinTypeGPIOInput/ROM_GPIOPinTypeGPIOOutput sẽ bao gồm cả hai hàm phía trên tức là sẽ config chiều của pin bằng ROM_GPIODirModeSet và config khả năng chịu dòng của pin bằng ROM_GPIOPadConfigSet là 4mA. Do đó, cách thông thường được dùng để lập trình chân port thành input/out put là dùng ngay các hàm ROM_GPIOPinTypeGPIOInput/ROM_GPIOPinTypeGPIOOutput.:6cool_boss: :6cool_boss:
 

denchetmatthoi

Trứng gà
Em hiểu rồi. Cảm ơn anh nhiều nhiều lắm :D
Mà sao lại có chữ ROM_ đằng trước trong khi code trong file không có vậy? :misdoubt:
 
Top