我使用openocd
,arm-none-eabi-gdb
和STLinkV2-1
来调试STM32F411CE
芯片。我还使用LL和CMSIS库。问题是要检查例如一个引脚我必须在数据表中查找特定GPIO端口的寄存器边界地址(例如0x4002 0000 - 0x4002 03FF
为GPIOA
),然后检查我想要读取的寄存器的偏移量(例如{{ 1}} 0x10
)。然后检查一个特定的位,我必须再次在数据表中检查它在寄存器中的偏移量,并从十六进制值计算该位的值。因此,对于GPIOx_IDR
,它将是:
gdb
通过输入类似的内容,是否有更简单的方法来获取价值:
(gdb) x 0x40020010
0x40020010: 0xa8280000
我在get bit value in register GPIOA IDR
数据表或互联网上找不到任何能回答我问题的内容。
答案 0 :(得分:1)
我找到了解决方案。
CMSIS
定义了所有外围设备,因此我们可以使用它:
-gdwarf-4 -g3
gcc标志编译项目以使用gdb
运行gdb
:
arm-none-eabi-gdb -nw program.elf
使用CMSIS定义:检查例如: PORTB上的第3个引脚用作输入:
(gdb) p (GPIOB->IDR & GPIO_BSRR_BS_3)