Ok im getting tired of how that CMSIS is setup and find it to be more of hassle.Here is a simple but very useful function:

void ConfigPin(GPIO_TypeDef *myGPIO, uint32_t PIN, uint32_t MODE, uint32_t SPEED, uint32_t PUPD)
{
    /*
 myGPIO: The GPIOx port for the selected pin

 MODE: 0 = INPUT .... 1 = OUTPUT .... 2 = ALTERNATE FUNCTION .... 3 = ANALOG

 SPEED: 0 = 2MHz (Low Speed) .... 1 = 25MHz (Med. Speed) .... 2 = 50MHz (Fast Speed) .... 3 = 100MHz/80MHz (High Speed)(100MHz(30pf) - 80MHz(15pf))

 PUPD: 0 = No Pull-Up / No Pull-Down .... 1 = Pull-Up Enabled .... 2 = Pull-Down Enabled .... 3 = Reserved
 */
    myGPIO->MODER |= (MODE << (PIN * 2));//OUTPUT
    myGPIO->OSPEEDR |= (SPEED << (PIN * 2));//50MHz
    myGPIO->PUPDR |= (PUPD << (PIN * 2));   //Set it for NO PUPD
}

 

By admin

Leave a Reply

Your email address will not be published. Required fields are marked *