keil5在线仿真Symbol窗口没有项目location名称及error 65 no ‘read‘permission问题

训练日志 keil5在线仿真遇到问题,找到博客

[https://blog.csdn.net/he__yuan/article/details]

查找参数值:

在这里插入图片描述

没有项目名称

解决办法:魔术棒Debug中,自行添加路径中的ini文件,之后重新编译再进入debug模式。
在这里插入图片描述
如何看结构体参数:

在这里插入图片描述跟踪结构体参数在这里插入图片描述
在这里插入图片描述
查看PB0对应的寄存器地址

找到GPIOB的输入数据寄存器(GPIOB_IDR)或输出数据寄存器(GPIOB_ODR)的地址。

例如,STM32F1系列中,GPIOB_IDR的地址为 0x40010C08(不同型号地址可能不同)。
在这里插入图片描述
在这里插入图片描述

最后小知识:不同GPIO端口(如PA0和PB0)的输入/输出数据寄存器地址是不同的

在STM32系列微控制器中,不同GPIO端口(如PA0和PB0)的输入/输出数据寄存器地址是不同的,不会相同。以下是详细解释:


1. 寄存器地址分配规则

STM32的GPIO端口(如GPIOA、GPIOB等)采用基地址+偏移量的方式分配寄存器地址。

  • 基地址:每个GPIO端口有一个独立基地址。
    • 例如(以STM32F1为例):
      • GPIOA基地址:0x40010800
      • GPIOB基地址:0x40010C00
  • 偏移量:每个寄存器的偏移量在端口内固定。
    • 输入数据寄存器(IDR)偏移量:0x08
    • 输出数据寄存器(ODR)偏移量:0x0C

因此:

  • GPIOA_IDR地址 = 0x40010800 + 0x08 = 0x40010808
  • GPIOB_IDR地址 = 0x40010C00 + 0x08 = 0x40010C08
  • GPIOA_ODR地址 = 0x40010800 + 0x0C = 0x4001080C
  • GPIOB_ODR地址 = 0x40010C00 + 0x0C = 0x40010C0C

结论:PA0和PB0对应的寄存器地址完全不同


2. 可能误解的原因

若观察到地址“相同”,可能是以下情况导致混淆:

  1. 代码或工具显示简写
    • 某些调试工具可能仅显示偏移量(如0x08),而非完整地址。需确认是否显示的是完整地址
  2. 芯片手册查阅错误
    • 不同芯片型号(如STM32F1/F4/H7)的地址可能差异较大,需核对具体型号的参考手册。
  3. 寄存器别名或位操作
    • 部分库函数(如HAL库)通过位操作访问寄存器,可能让人误以为地址相同,例如:
      GPIOA->ODR |= 0x01;  // 操作GPIOA的ODR寄存器
      GPIOB->ODR |= 0x01;  // 操作GPIOB的ODR寄存器
      
      虽然代码写法相似,但实际操作的地址不同。

3. 验证方法

(1) 直接查看芯片手册
  • 在芯片参考手册的Memory MapGPIO章节中,明确列出所有寄存器的基地址和偏移量。
(2) 使用调试工具查看实际地址
  • 在Keil的Memory窗口中直接输入地址:
    • 输入0x40010808查看PA0的输入值(GPIOA_IDR)。
    • 输入0x40010C08查看PB0的输入值(GPIOB_IDR)。
(3) 编写测试代码
// 打印寄存器地址
printf("GPIOA_IDR地址: 0x%08X\n", &GPIOA->IDR);
printf("GPIOB_IDR地址: 0x%08X\n", &GPIOB->IDR);

4. 注意事项

  • 芯片型号差异:不同系列(如STM32F1/F4/H7)的GPIO基地址可能不同,需以实际型号手册为准。
  • 外设寄存器独立性:每个GPIO端口的寄存器组完全独立,不会共享地址。

总结

PA0和PB0的输入/输出寄存器地址绝对不同。若发现地址“相同”,需检查是否混淆了偏移量与完整地址,或查阅了错误的芯片手册。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值