2024-01-18 2: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 5: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 5: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 5:51 AM - edited 2024-01-18 5: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.