簡體   English   中英

STM32 使用 CMSIS 閃爍 LED

[英]STM32 Blinking an LED using CMSIS

//setup
    RCC->AHBENR |= 0x20000; //bit 17
    GPIOA->MODER |= 0x100000; // MODER10 (PA10)
    GPIOA->OTYPER |= (1<<10); // bit 10
// main
      GPIOA->BSRR = 0x400; LED HIGH
      HAL_Delay(1000);
      GPIOA->BRR = 0x400; LED LOW
      HAL_Delay(1000);

我無法使用 PA10 閃爍外部 LED。 我閱讀了數據表並使用了相應的寄存器。

該代碼應該僅使用寄存器 (CMSIS) 使外部 LED 閃爍,並且該 LED 連接在 PA10 上。 我正在使用 Nucleo-F303RE 板。

我認為您通過將其 OTYPER 位設置為 1 將 PA10 配置為開漏 (OD) output。您忘了說您的 LED 是如何連接的,但是如果您必須將 I/O 引腳驅動為高電平以打開 LED ,那么您不希望它是開漏 output。 嘗試刪除設置 OTYPER 位的行。

OTYPER寄存器選擇 output 類型,其中一位為 0 表示相應引腳上的推挽模式,1 -開漏

開漏是指當 output 值為 0 時端口連接到 GND,當 output 值為 1 時懸空。此模式旨在與上拉電阻(內部或外部)一起使用。

如果您的 LED 連接在 output 和 GND 之間,則應使用推挽模式。 即您需要在MODER寄存器的位中保持零值。

還有我的建議:盡量避免“幻數”使用 CMSIS 中的位名稱。 例如:代替

RCC->AHBENR |= 0x20000;

RCC->AHBENR |= RCC_AHBENR_IOPAEN;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM