2024-01-18 02:16 AM
I am tring to write a code for stm32f401cb which will blink the led when i press the led and when i leave pressing the button,it will turn out the led.I have set channel ahb1 which connects to port a and b in my microprocessor f401cb and i chose input type pull down in port a and led is connected to port b.
But my led is not blinking in anyway.
where is my mistake you think?
My led is not blinking when i press the button.it is always turned out
As you can see in the picture am holding the button but there is no response on the led.
Note:Port a is selected as input and port b is selected as output and both ports are controlled with their 0 (zero) pins.
my code is like that
Why i cant get a response on the led?
#include "stm32f4xx.h" void ahb1_config(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); } void gpio_config(void) { GPIO_InitTypeDef gpio_init; gpio_init.GPIO_Mode=0x00; gpio_init.GPIO_Pin=GPIO_Pin_0 ; gpio_init.GPIO_OType=0x00; gpio_init.GPIO_PuPd=0x02; gpio_init.GPIO_Speed=0x03; GPIO_Init(GPIOA,&gpio_init); gpio_init.GPIO_Mode=GPIO_Mode_OUT; gpio_init.GPIO_Pin=GPIO_Pin_0 ; gpio_init.GPIO_OType=GPIO_OType_PP; gpio_init.GPIO_Speed=GPIO_Speed_100MHz; GPIO_Init(GPIOB,&gpio_init); } int main(void) { while (1) { ahb1_config(); gpio_config(); if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)) { GPIO_SetBits(GPIOB,GPIO_Pin_0); } else { GPIO_ToggleBits(GPIOB,GPIO_Pin_0); } } }
2024-01-18 05:09 AM
The LED is blinking, you just can't see it.
if (GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)) { GPIO_SetBits(GPIOB,GPIO_Pin_0); } else { GPIO_ToggleBits(GPIOB,GPIO_Pin_0); }
Try to measure how fast that loop executes.
Or else, simply insert a delay of 50 ... 1000ms.
2024-01-18 05:38 AM
Start by having it set or clear based on the switch. Confirm that the switch and LED work.
Not sure is schematic is supposed to be complete, but have a pull down resistor on BOOT0 and a 4u7 capacitor on VCAP
2024-01-18 05:51 AM - edited 2024-01-18 05:52 AM
LED needs a current limiting resistor otherwise it will instantly burn out.
Schematic is missing power and other things.
Debug, set a breakpoint within GPIO_ReadInputDataBit and see if it gets triggered when button is down.
GPIO_ToggleBits should be GPIO_ClearBits if you want the LED to turn off and stay off when button isn't held.