- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过 STM32CubeIDE 仅使用寄存器来打开 nucleo 板内的 LED(原理图中的 LD2)。
用户手册声明了时钟、模式和数据寄存器的以下地址:
Led pin: PA5
Address of the Clock control register: RCC_AHBENR
[base address] + [offset] ===> [Result]
0x4002 1000 + 0x14 ===> 0x40021014
Address of the GPIOA mode register
0x4800 0000 + 0x00 ===> 0x48000000
Address of the GPIOA output data register
0x4800 0000 + 0x14 ===> 0x48000014
我正在使用以下代码来设置/清除板中的寄存器:
#include <stdint.h>
int main(void)
{
uint32_t *pClkCtrlReg = (uint32_t*)0x40021014;
uint32_t *pPortAModeReg = (uint32_t*)0x48000000;
uint32_t *pPortAOutReg = (uint32_t*)0x48000014;
//1. enable the clock for GPIOA peripheral in the AHBENR
*pClkCtrlReg |= 0x00020000;
//2. configure the mode of the IO pin as output
//a. clear the 24th and 25th bit positions
*pPortAModeReg &= 0xFCFFFFFF;
//b set 24th bit position as 1
*pPortAModeReg |= 0x01000000;
//3. SET 12th bit of the output data register to make I/O pin-12 as HIGH
*pPortAOutReg |= 0x20;
while(1);
}
使用 IDE 中的寄存器查看器,我可以看到 PA5 被设置为输出,但实际上,我的 LED 没有打开。
我不知道我做错了什么。我怀疑 PA5 的引脚是错误的,但我也尝试了 PA12,但它不起作用。有人可以帮我解决这个问题吗?
最佳答案
我手头有引用手册,遍历了您的代码。 RM0316 STM32F303 Reference manual .
您正确激活了 GPIO 端口 A 的时钟(此外,如果 GPIOA 寄存器未被激活,它也会读取所有 0x00)。
然后你将 GPIO 模式设置为,引用你的话:
//2. configure the mode of the IO pin as output
//a. clear the 24th and 25th bit positions
*pPortAModeReg &= 0xFCFFFFFF;
//b set 24th bit position as 1
*pPortAModeReg |= 0x01000000;
您使用第 24 位和第 25 位。它们是:
因此,您为引脚 A12 而不是 A5 设置了模式。对于 GPIOA 引脚 5,您需要操作位 10 和 11。
//clear pin5 bits
*pPortAModeReg &= ~(0x03 << 10); //take 0b11, shift it to position 10, flip all bits, AND with original state of register
然后将这些位设置为“通用输出模式”01,您也可以对错误的位执行此操作:
//b set 10th bit position as 1
*pPortAModeReg |= (0x01 << 10);
我检查了 GPIO 的所有寄存器,应该没有其他需要设置的东西。如果仍然无法正常工作,请发布所有 GPIOA 寄存器的内容。
编辑:另外,尝试使用位设置/重置寄存器。请注意,它们是只读的,因此没有“|=”,只有“=”。将 0 写入它们不会执行任何操作。所以你只需要直接写入 (0x01<<5) 到 GPIOA BSRR 寄存器。
GPIOA->BSRR = (1U<<5); //or however you want to address that register
关于embedded - 内置 LED 不会打开 STM32F303RE Nucleo 板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72892782/
嘿,我 wounderd 如果有什么。我可以继续阅读以改进此代码的突击队吗?至少它现在可以工作,但需要做一些微调:) 如您所见,代码非常困惑且难以阅读。希望有人能帮忙。 提前谢谢。 int potPi
我使用 AVR 作为微 Controller ,ATMEGA8 作为处理器(在微 Controller 内部)。带有微 Controller 的电路板有 4 个 LED。我能够刻录程序并点亮 LEDS
谁能解释一下两者之间的关系 LED 像素密度, LED像素高度和宽度 , 和 分辨率在创建模拟器时方法很详细。。并在启动时再次默认值:皮肤尺寸、密度;缩放密度以实现大小? 最佳答案 像素密度:每英寸像
我有一个由大小为 64*64 的 LED 组成的阵列。每个 LED 都可以点亮各种颜色,并且可以非常快速地改变颜色。我的最终目标是:对于网络摄像头接收到的每一帧,我希望能够从帧中“提取”LED 数组,
我正在使用 Arduino Uno 软件进行编码,但遇到了问题。我试图以随机顺序打开 8 个 LED,然后立即将它们全部关闭。我的问题是 LED 会多次点亮相同的 LED,但最终不会全部点亮。这使得电
当我使用Ethernet.begin(mac,ip)时,LED灯不会打开和关闭。但是当我不使用那条线时它就可以工作。但我需要使用以太网和 UPP 模块来打开和关闭。我怎样才能? 板卡型号:以太网08T
我试图顺时针和逆时针方向点亮我的 LED 灯。我使用mpu6050作为LED的方向控制。我检查了我的 mpu6050 驱动代码,它们没问题。顺时针方向工作时效果很好,所有 LED 灯均呈红色亮起。像这
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 4 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!