Algunos pines GPIO no funcionan en el descubrimiento de STM32VLD

0

Este es mi código:

#include "stm32f10x.h"
#include "core_cm3.h"
#include "custom.h"
//#include "LCD-HD44780.h"

//int i;
int main(void)
{
    RCC->APB2ENR |= BIT3;

    GPIOB->CRH   |= BIT0 || BIT1;
    GPIOB->CRH   &= ~BIT2 && ~BIT3;
    GPIOB->BSRR  |= BIT8;

    GPIOB->CRH   |= BIT4 || BIT5;
    GPIOB->CRH   &= ~BIT6 && ~BIT7;
    GPIOB->BSRR  |= BIT9;   

    while (1)
    {
    }
}

archivo custom.h:

#include <stdint.h>
#define BIT0  (uint32_t)0x1
#define BIT1  (uint32_t)0x2
#define BIT2  (uint32_t)0x4
#define BIT3  (uint32_t)0x8
#define BIT4  (uint32_t)0x10
#define BIT5  (uint32_t)0x20
#define BIT6  (uint32_t)0x40
#define BIT7  (uint32_t)0x80
#define BIT8  (uint32_t)0x100
#define BIT9  (uint32_t)0x200
#define BIT10 (uint32_t)0x400
#define BIT11 (uint32_t)0x800
#define BIT12 (uint32_t)0x1000
#define BIT13 (uint32_t)0x2000
#define BIT14 (uint32_t)0x4000
#define BIT15 (uint32_t)0x8000
#define BIT16 (uint32_t)0x10000
#define BIT17 (uint32_t)0x20000
#define BIT18 (uint32_t)0x40000
#define BIT19 (uint32_t)0x80000
#define BIT20 (uint32_t)0x100000
#define BIT21 (uint32_t)0x200000
#define BIT22 (uint32_t)0x400000
#define BIT23 (uint32_t)0x800000
#define BIT24 (uint32_t)0x1000000
#define BIT25 (uint32_t)0x2000000
#define BIT26 (uint32_t)0x4000000
#define BIT27 (uint32_t)0x8000000
#define BIT28 (uint32_t)0x10000000
#define BIT29 (uint32_t)0x20000000
#define BIT30 (uint32_t)0x40000000
#define BIT31 (uint32_t)0x80000000

El LED en el Pin 8 se enciende Pero en el Pin 9 no se enciende. Y este todo el código que escribí. No puedo averiguar dónde está el problema.

    
pregunta peyman khalili

1 respuesta

4

Tienes dos líneas de código donde estableciste GPIOB->CRH :

GPIOB->CRH   &= ~BIT2 && ~BIT3;

GPIOB->CRH   &= ~BIT6 && ~BIT7;

El operador && es el AND lógico, que devuelve verdadero o falso. Lo que necesitas usar aquí es el operador & , que es el bit AND AND.

Lo mismo se aplica al operador lógico OR || y bitwise OR | en las otras líneas de código.

    
respondido por el Finbarr

Lea otras preguntas en las etiquetas