C:/nxpdrv/LPC1700CMSIS/Drivers/source/lpc17xx_pinsel.c
Go to the documentation of this file.00001 00021 /* Peripheral group ----------------------------------------------------------- */ 00026 /* Includes ------------------------------------------------------------------- */ 00027 #include "lpc17xx_pinsel.h" 00028 00029 00030 /* Public Functions ----------------------------------------------------------- */ 00035 /*********************************************************************/ 00088 void PINSEL_SetPinFunc ( uint8_t portnum, uint8_t pinnum, uint8_t funcnum) 00089 { 00090 uint32_t pinnum_t = pinnum; 00091 uint32_t pinselreg_idx = 2 * portnum; 00092 uint32_t *pPinCon = (uint32_t *)&LPC_PINCON->PINSEL0; 00093 00094 if (pinnum_t >= 16) { 00095 pinnum_t -= 16; 00096 pinselreg_idx++; 00097 } 00098 *(uint32_t *)(pPinCon + pinselreg_idx) &= ~(0x03UL << (pinnum_t * 2)); 00099 *(uint32_t *)(pPinCon + pinselreg_idx) |= ((uint32_t)funcnum) << (pinnum_t * 2); 00100 } 00101 00102 00103 00104 /*********************************************************************/ 00113 void PINSEL_ConfigTraceFunc(FunctionalState NewState) 00114 { 00115 if (NewState == ENABLE) { 00116 LPC_PINCON->PINSEL10 |= (0x01UL << 3); 00117 } else if (NewState == DISABLE) { 00118 LPC_PINCON->PINSEL10 &= ~(0x01UL << 3); 00119 } 00120 } 00121 00122 00123 00124 /*********************************************************************/ 00175 void PINSEL_SetResistorMode ( uint8_t portnum, uint8_t pinnum, uint8_t modenum) 00176 { 00177 uint32_t pinnum_t = pinnum; 00178 uint32_t pinmodereg_idx = 2 * portnum; 00179 uint32_t *pPinCon = (uint32_t *)&LPC_PINCON->PINMODE0; 00180 00181 if (pinnum_t >= 16) { 00182 pinnum_t -= 16; 00183 pinmodereg_idx++ ; 00184 } 00185 00186 *(uint32_t *)(pPinCon + pinmodereg_idx) &= ~(0x03UL << (pinnum_t * 2)); 00187 *(uint32_t *)(pPinCon + pinmodereg_idx) |= ((uint32_t)modenum) << (pinnum_t * 2); 00188 } 00189 00190 00191 00192 /*********************************************************************/ 00243 void PINSEL_SetOpenDrainMode( uint8_t portnum, uint8_t pinnum, uint8_t modenum) 00244 { 00245 uint32_t *pPinCon = (uint32_t *)&LPC_PINCON->PINMODE_OD0; 00246 00247 if (modenum == PINSEL_PINMODE_OPENDRAIN){ 00248 *(uint32_t *)(pPinCon + portnum) |= (0x01UL << pinnum); 00249 } else { 00250 *(uint32_t *)(pPinCon + portnum) &= ~(0x01UL << pinnum); 00251 } 00252 } 00253 00254 00255 00256 /*********************************************************************/ 00269 void PINSEL_SetI2C0Pins(uint8_t i2cPinMode, FunctionalState filterSlewRateEnable) 00270 { 00271 uint32_t regVal; 00272 00273 if (i2cPinMode == PINSEL_I2C_Fast_Mode){ 00274 regVal = PINSEL_I2CPADCFG_SCLDRV0 | PINSEL_I2CPADCFG_SDADRV0; 00275 } 00276 00277 if (filterSlewRateEnable == DISABLE){ 00278 regVal = PINSEL_I2CPADCFG_SCLI2C0 | PINSEL_I2CPADCFG_SDAI2C0; 00279 } 00280 LPC_PINCON->I2CPADCFG = regVal; 00281 } 00282 00283 00284 /*********************************************************************/ 00292 void PINSEL_ConfigPin(PINSEL_CFG_Type *PinCfg) 00293 { 00294 PINSEL_SetPinFunc(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Funcnum); 00295 PINSEL_SetResistorMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->Pinmode); 00296 PINSEL_SetOpenDrainMode(PinCfg->Portnum, PinCfg->Pinnum, PinCfg->OpenDrain); 00297 } 00298 00299 00308 /* --------------------------------- End Of File ------------------------------ */
Generated on Mon Feb 8 10:01:38 2010 for LPC1700CMSIS Standard Peripheral Firmware Library by
