keil仿真错误:*** error 65: access violation at 0x40021000 : no ‘write‘ permission

文章讲述了作者使用STM32F103C8T6芯片在遇到仿真问题后,成功解决的过程,包括步骤和可能的解决方案。

 

按下图打开:

进行修改:

 

 我用的芯片是:STM32F103C8T6

开始仿真:

成功解决不能仿真问题 

### Keil5 仿真 Error 65 访问违规解决方案 当在Keil V5环境中进行STM32项目仿真时,如果遇到`error 65: access violation at 0x40021000 : no 'read' permission`这样的错误信息,通常意味着程序试图访问未被允许读取的内存区域。此类问题可以通过调整调试器设置来解决。 #### 调试映射文件配置 为了修正此问题,可以尝试修改项目的调试配置。具体操作为进入debug模式下的MAP(Memory Access Permissions)设置界面,在这里定义哪些地址范围是可以被读写的[^1]。 #### 创建自定义初始化文件 另一个有效的措施是在项目根目录下创建一个新的名为`debug.ini`的配置文件。该文件用于指定额外的调试参数或覆盖默认行为,从而帮助规避权限冲突的问题。 对于特定于硬件外设寄存器(如GPIO、TIM等)发生的访问违例情况,则需确认所使用的MCU型号及其对应的启动代码是否正确设置了这些资源的工作状态;另外也要检查是否有不当的操作发生在受保护的系统级位置上[^3]。 此外,确保使用的是最新版本的MDK包以及配套的支持库也很重要,因为开发者经常会针对已知缺陷发布更新补丁[^2]。 最后值得注意的一点是,某些情况下可能是由于目标板连接不稳定或是JTAG/SWD接口存在问题引起的异常现象,因此建议先排除物理层面的因素后再深入探究软件方面的成因[^5]。 ```c // 示例:简单的C语言函数用来验证基本功能正常工作 void checkBasicFunctionality(void){ GPIO_InitTypeDef GPIO_InitStruct = {0}; __HAL_RCC_GPIOA_CLK_ENABLE(); // 启用GPIOA时钟 /* 配置PA5作为推挽输出 */ GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aurora Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值