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