STM32L0+ PA0 引脚高
STM32L0+ PA0 PIN High
我不确定这个论坛是否适合 post 此类问题,但我作为 STM32 的初学者面临以下问题。
我已将 LED 连接到 nucleo STM32L073RZ 板上的 PA0 引脚。
这是一个main.c代码,我编译并烧写板:
#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
我不确定这个论坛是否适合 post 此类问题,但我作为 STM32 的初学者面临以下问题。 我已将 LED 连接到 nucleo STM32L073RZ 板上的 PA0 引脚。 这是一个main.c代码,我编译并烧写板:
#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