How can I use GPIOA and GPIOB at the same time?

This is the program I'm trying to run. It's actually a program for a running light but for GPIOB's LED which is connected for the first LED just stayed on all the time, while the other 3 LED which is at GPIOA is is a running light sequence.

#include "stm32f4xx.h"
void delayMs(int n);

int main(){
RCC -> AHB1ENR |= 3;
GPIOA -> MODER &= ~0x0000FC00;
GPIOA -> MODER |= 0x00005400;
GPIOB -> MODER &= ~0x00003000;
GPIOB -> MODER |= 0x00001000;

while(1){
GPIOB->BSRR |= 0x004000A0;
delayMs(500);
GPIOA->BSRR |= 0x00800060;
delayMs(500);
GPIOA->BSRR |= 0x004000A0;
delayMs(500);
GPIOA->BSRR |= 0x002000C0;
delayMs(500);
}
}

void delayMs (int n){
int i;
for(; n>0; n--)
for(i=0; i<3000; i++);
}

Can someone help me?

Parents
  • I made two version of it, for .c and .asm. I don't know how to solve it after this.

    AREA PROG, CODE, READONLY
    EXPORT main
    ENTRY

    RCC_AHB1ENR equ 0x40023830
    GPIOA_MODER equ 0x40020000
    GPIOA_ODR equ 0x40020014

    ADC_SQR1 equ 0x40012008
    GPIOB_MODER equ 0x40020400
    GPIOB_ODR equ 0x40020414

    main ldr r4, =RCC_AHB1ENR ; enable GPIOA clock
    ldr r5, [r4]
    orr r5, #3
    str r5, [r4]

    ldr r1, =ADC_SQR1 ; enable GPIOB clock
    ldr r2, [r1]
    orr r2, #3
    str r2, [r1]

    ldr r4, =GPIOA_MODER ; set pin A to output mode
    ldr r5, [r4]
    bic r5, #0x0000FC00
    orr r5, #0x00005400
    str r5, [r4]

    ldr r1, =GPIOB_MODER ; set pin B to output mode
    ldr r2, [r1]
    bic r2, #0x00003000
    orr r2, #0x00001000
    str r2, [r1]

    L1 ldr r4, =GPIOB_ODR
    ldr r5, =0x0000FFBF ; turn on D4
    str r5, [r4]
    mov r0, #500
    bl delay

    ldr r4, =GPIOA_ODR
    ldr r5, =0x0000FF7F ; turn on D3
    str r5, [r4]
    mov r0, #500
    bl delay

    ldr r4, =GPIOA_ODR
    ldr r5, =0x0000FFBF ; turn on D2
    str r5, [r4]
    mov r0, #500
    bl delay

    ldr r4, =GPIOA_ODR
    ldr r5, =0x0000FFDF ; turn on D1
    str r5, [r4]
    mov r0, #500
    bl delay
    b L1 ; loop forever

    delay ldr r1, =5325
    DL1 subs r1, r1, #1
    bne DL1
    subs r0, r0, #1
    bne delay
    bx lr

    end

    This one is in .asm file. Can 

Reply Children
More questions in this forum