[英]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.