Instead of inserting Port_name and Pin_name separately in the function argument, we can combine them as one argument.
Compare these two similar function argument. Which is easier to use?
GPIO_mode(GPIOA, 5, OUTPUT);
GPIO_mode(PA_5, OUTPUT);
We can combine PORT and PIN as one information by user-defined PinNames header file ecPinNames.h. Here we have defined PA_0 to PC_15.
You can also define additional Port and Pins in the header file.
Examples
Usage example 1
// GPIO Mode : Input(00), Output(01), AlterFunc(10), Analog(11, reset)voidGPIO_mode(PinNames_t pinName,int mode){ // Separate port-name and pin-number from pinName GPIO_TypeDef *Port;unsignedint pin;ecPinmap(pinName,&Port,&pin);Port->MODER &=~(3UL<<(2*pin)); Port->MODER |= mode<<(2*pin); }// In MAIN()GPIO_mode(PA_5, OUTPUT);GPIO_mode(PC_15, INPUT);//////////////////////////////////////////////////////////////////////////////////////// You can also use PORT name and PIN name separately for the function argument/* void GPIO_mode(GPIO_TypeDef *Port, int pin, int mode){ Port->MODER &= ~(3UL<<(2*pin)); Port->MODER |= mode<<(2*pin); }*//* In MAIN()GPIO_mode(GPIOA, 5, OUTPUT);GPIO_mode(GPIOC, 15, INPUT);*/