Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Smoothie by
gpio.cpp
00001 #include "gpio.h" 00002 00003 #include "LPC17xx.h" 00004 #include "lpc17xx_pinsel.h" 00005 #include "lpc17xx_gpio.h" 00006 00007 GPIO::GPIO(PinName pin) { 00008 this->port = (pin >> 5) & 7; 00009 this->pin = pin & 0x1F; 00010 00011 setup(); 00012 } 00013 00014 GPIO::GPIO(uint8_t port, uint8_t pin) { 00015 GPIO::port = port; 00016 GPIO::pin = pin; 00017 00018 setup(); 00019 } 00020 00021 GPIO::GPIO(uint8_t port, uint8_t pin, uint8_t direction) { 00022 GPIO::port = port; 00023 GPIO::pin = pin; 00024 00025 setup(); 00026 00027 set_direction(direction); 00028 } 00029 // GPIO::~GPIO() {} 00030 00031 void GPIO::setup() { 00032 PINSEL_CFG_Type PinCfg; 00033 PinCfg.Funcnum = 0; 00034 PinCfg.OpenDrain = PINSEL_PINMODE_NORMAL; 00035 PinCfg.Pinmode = PINSEL_PINMODE_TRISTATE; 00036 PinCfg.Portnum = GPIO::port; 00037 PinCfg.Pinnum = GPIO::pin; 00038 PINSEL_ConfigPin(&PinCfg); 00039 } 00040 00041 void GPIO::set_direction(uint8_t direction) { 00042 FIO_SetDir(port, 1UL << pin, direction); 00043 } 00044 00045 void GPIO::output() { 00046 set_direction(1); 00047 } 00048 00049 void GPIO::input() { 00050 set_direction(0); 00051 } 00052 00053 void GPIO::write(uint8_t value) { 00054 output(); 00055 if (value) 00056 set(); 00057 else 00058 clear(); 00059 } 00060 00061 void GPIO::set() { 00062 FIO_SetValue(port, 1UL << pin); 00063 } 00064 00065 void GPIO::clear() { 00066 FIO_ClearValue(port, 1UL << pin); 00067 } 00068 00069 uint8_t GPIO::get() { 00070 return (FIO_ReadValue(port) & (1UL << pin))?255:0; 00071 } 00072 00073 int GPIO::operator=(int value) { 00074 if (value) 00075 set(); 00076 else 00077 clear(); 00078 return value; 00079 }
Generated on Tue Jul 12 2022 20:09:02 by
1.7.2
