Skip to main content
benbb
Associate II
November 19, 2011
Question

GPIOs not functioning, what gives ?

  • November 19, 2011
  • 3 replies
  • 806 views
Posted on November 19, 2011 at 15:02

All,

I`m fairly new to the STM32 family, not new to C or other micros:

I use: Keil Lite: V4.22.22.0, 4.22a with an ST-Link, this all works and compiles etc. I can run code on my board no problem !!

Now I`m trying to do something simple, ie to toggle pins on PORTC, nothing I have tried \

so far helped. here is my code simple strait-up (not all declerations are shown):

void main(void)

{

RCC_Configuration(); 

NVIC_Configuration();

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(GPIOC, &GPIO_InitStructure);

GPIO_SetBits(GPIOC, GPIO_Pin_All);            !!!!Nothing the port pins are ALWAYS low

}

I used the EXAMPLE project as well in the Keil directory... I also tried DeInit etc....

Any suggestions ?

Also what I would like to know is that once a port is configured, how do you make changes to that port/pins without affecting the whole port structure? Will it change the whole port if I call same GPIO_Init(GPIOC, &GPIO_InitStructure) function with different pins and configurations ? Can`t find any reference to  that in the documentation
    This topic has been closed for replies.

    3 replies

    Tesla DeLorean
    Guru
    November 19, 2011
    Posted on November 19, 2011 at 17:37

    Make sure you enable the GPIOC clock.

    Fill in all the fields of the GPIO Init structure.

    Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
    infoinfo989
    Associate III
    November 19, 2011
    Posted on November 19, 2011 at 17:39

    Have you turned on the clock to GPIO port C? By default (after reset) the clock is turned off.

    benbb
    benbbAuthor
    Associate II
    November 20, 2011
    Posted on November 20, 2011 at 09:39

    YES, that solved it

    I must say I have never encountered this in the PIC`s..... :) 

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE ); 

    That solved it, now I can get the EXTI to work...

    Thanks

    Ben