打印

这是Keil编译器的问题吗

[复制链接]
8668|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
godday|  楼主 | 2012-7-24 23:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
当选用STM32F103时一切都正常(编译和debug),当选用STM32F105时编译是通过的,但debug的时候弹出 “error 65: access violation at 0x40021000: no 'read' permission.”的错误,查到0x40021000是RCC寄存器,按道理STM32F103和STM32F105的RCC寄存器地址是一样的,为什么会出现这种情况呢,有人碰到过吗?
沙发
gygp| | 2012-7-25 08:13 | 只看该作者
型号选对了吗?

使用特权

评论回复
板凳
qiujiahongde| | 2012-7-25 08:37 | 只看该作者
1、查看DEBUG设置;
2、查看链接!

使用特权

评论回复
地板
godday|  楼主 | 2012-7-25 10:21 | 只看该作者
这是keil例程里的初始化函数,就是这里的RCC寄存器出问题,那个大侠有试过
void SystemInit (void)
{
  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
  /* Set HSION bit */
  RCC->CR |= (uint32_t)0x00000001;

  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
  RCC->CFGR &= (uint32_t)0xF8FF0000;
#else
  RCC->CFGR &= (uint32_t)0xF0FF0000;
#endif /* STM32F10X_CL */   
  
  /* Reset HSEON, CSSON and PLLON bits */
  RCC->CR &= (uint32_t)0xFEF6FFFF;

  /* Reset HSEBYP bit */
  RCC->CR &= (uint32_t)0xFFFBFFFF;

  /* Reset PLLSRC, PLLXTPRE, PLLMUL and USBPRE/OTGFSPRE bits */
  RCC->CFGR &= (uint32_t)0xFF80FFFF;

#ifdef STM32F10X_CL
  /* Reset PLL2ON and PLL3ON bits */
  RCC->CR &= (uint32_t)0xEBFFFFFF;

  /* Disable all interrupts and clear pending bits  */
  RCC->CIR = 0x00FF0000;

  /* Reset CFGR2 register */
  RCC->CFGR2 = 0x00000000;
#elif defined (STM32F10X_LD_VL) || defined (STM32F10X_MD_VL) || (defined STM32F10X_HD_VL)
  /* Disable all interrupts and clear pending bits  */
  RCC->CIR = 0x009F0000;

  /* Reset CFGR2 register */
  RCC->CFGR2 = 0x00000000;      
#else
  /* Disable all interrupts and clear pending bits  */
  RCC->CIR = 0x009F0000;
#endif /* STM32F10X_CL */
   
#if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL)
  #ifdef DATA_IN_ExtSRAM
    SystemInit_ExtMemCtl();
  #endif /* DATA_IN_ExtSRAM */
#endif

  /* Configure the System clock frequency, HCLK, PCLK2 and PCLK1 prescalers */
  /* Configure the Flash Latency cycles and enable prefetch buffer */
  SetSysClock();

#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM. */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH. */
#endif
}

使用特权

评论回复
5
godday|  楼主 | 2012-7-25 10:24 | 只看该作者
上面的例子已经定义了STM32F10X_CL

使用特权

评论回复
6
haitianhappy| | 2013-1-14 16:44 | 只看该作者
这个问题解决了吗

使用特权

评论回复
7
swustlx86| | 2013-3-19 14:56 | 只看该作者
遇到一样的问题了  楼主怎么解决的啊?

使用特权

评论回复
8
lollipooop| | 2013-5-12 15:39 | 只看该作者
Debug里面的设置有问题


更改下面两项

Dialog DLL 改为 DARMSTM.DLL
Parameter 改为 -pSTM32F103VC

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
过马路1936 + 1 厉害
9
smallbright| | 2014-5-4 22:43 | 只看该作者
lollipooop 发表于 2013-5-12 15:39
Debug里面的设置有问题

哎??为什么我改了之后连调试页面都打不开了???

使用特权

评论回复
10
mmuuss586| | 2014-5-5 08:17 | 只看该作者
smallbright 发表于 2014-5-4 22:43
哎??为什么我改了之后连调试页面都打不开了???

最好截个图,一起讨论下。

另外这是去年的帖子,最好重新发帖,容易沉没。

使用特权

评论回复
11
syp227| | 2014-5-23 11:32 | 只看该作者
我在进行软件仿真时也碰到这个问题了,修改方法:
将“Options for Target 'Target 1'”中‘Debug’页面下,最下面一行的Diglog DLL中内容:改为DARMSTM.DLL,Parameter中内容改为:改为-pSTM32F103VE就可以了,这边STM32F103VE是我选的芯片型号

使用特权

评论回复
12
E111111| | 2016-8-6 13:51 | 只看该作者
我也来挖挖“坟”。
这是一个常见的问题。搞不懂为何Keil公司一直不重视。照理来说,一旦用户选定了MCU型号,所有有关它的配置信息自然而然地都帮你预设置了。
可是,事与愿违,仅此一项,必须要自己手动设置。而且,与之有关的信息寥寥无几。
当我查看了Keil帮助文件中有关“Dialog DLL”设置方面的内容,它只提到这项设置最好不要更改,如果要更改,请参考“器件数据库参数”。而这“器件数据库参数”中并没有与之相关的信息。
我尝试在Keil的网站上搜索,也没有得到合适的结果。
最后只好作罢,自己动手改动了一下设置。


原来的么,是这样滴:

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝