/** !req SWS_Port_00005 */ void Port_Init(const Port_ConfigType *configType) { /* @req SWS_Port_00105 Always checking the parameter */ VALIDATE_PARAM_CONFIG(configType, PORT_INIT_ID); uint8 pinNr = 0; // The numbering used in table 2.1 Pin Assignment 176-Pin LQFP in the Renesas Ref Manual // First set outputs for (uint16 i = 0; configType->pinConfig[i].PortPinId != PORT_INVALID_REG; i++) { pinNr = configType->pinConfig[i].PortPinId; SET_PORT_REGISTER(pinNr, P, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); } // Copy config to register areas for (uint16 i = 0; configType->pinConfig[i].PortPinId != PORT_INVALID_REG; i++) { pinNr = configType->pinConfig[i].PortPinId; SET_PORT_REGISTER(pinNr, PMC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PIPC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PM, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PIBC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PFC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PFCE, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PFCAE, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PBDC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PU, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PD, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PDSC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PODC, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); SET_PORT_REGISTER(pinNr, PIS, configType->pinConfig[i], PORT_MODULE_ID, PORT_GLOBAL_ID, PORT_E_UNEXPECTED_EXECUTION); } /** @req SWS_Port_00002 */ Port_state = PORT_INITIALIZED; Port_configPtr = configType; }
void Port_Init(const Port_ConfigType *configType) { VALIDATE_PARAM_CONFIG(configType, PORT_INIT_ID); _configPtr = (Port_ConfigType *)configType; // Bring GIO register out of reset. gioREG->GCR0 = 1; for (uint16 i = 0; i < PORT_NUMBER_OF_PINS; i++) { Port_RefreshPin(i); } _portState = PORT_INITIALIZED; return; }