STM32L0+;PA0引脚高

STM32L0+;PA0引脚高,stm32,Stm32,我不确定,如果这个论坛是正确的地方张贴这样的问题,但我作为一个初学者在STM32面临以下问题。 我已将LED连接到NucleoSTM32L073RZ板中的PA0引脚。 这是一个main.c代码,由我编译并在flash板上运行: #include “stm32l0xx_hal.h” int main(void){ volatile uint32_t *GPIOA_MODER=0x0, *GPIOA_ODR=0x0; GPIOA_MODER = (uint32_t*)0x50000000; /

我不确定,如果这个论坛是正确的地方张贴这样的问题,但我作为一个初学者在STM32面临以下问题。 我已将LED连接到NucleoSTM32L073RZ板中的PA0引脚。 这是一个main.c代码,由我编译并在flash板上运行:

#include “stm32l0xx_hal.h” 
int main(void){

volatile uint32_t *GPIOA_MODER=0x0, *GPIOA_ODR=0x0;

GPIOA_MODER = (uint32_t*)0x50000000; //GPIOA MODER Address
GPIOA_ODR = (uint32_t*)(0x50000000+0x14); //GPIOA ODR register 0x14 offset

HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();

*GPIOA_MODER = *GPIOA_MODER | 0x1; // Set MODER[1:0] =0x1 Output Mode
*GPIOA_ODR = *GPIOA_ODR | 0x1; // Set ODR[0]=0x1, Pulls PA0 high
while(1);
}
好心的建议,我做错了什么,因为LED不高


BR

在STM32L0和STM32L4系列中,GPIO引脚在复位时初始化为模拟模式

因此,您应该首先清除一些位:

*GPIOA_MODER = (*GPIOA_MODER & ~0x03) | 0x1; // Set MODER[1:0] =0x1 Output Mode