这是Keil编译器的问题吗

[复制链接]
9728|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
}
 楼主| godday 发表于 2012-7-25 10:24 | 显示全部楼层
上面的例子已经定义了STM32F10X_CL
haitianhappy 发表于 2013-1-14 16:44 | 显示全部楼层
这个问题解决了吗
swustlx86 发表于 2013-3-19 14:56 | 显示全部楼层
遇到一样的问题了  楼主怎么解决的啊?
lollipooop 发表于 2013-5-12 15:39 | 显示全部楼层
Debug里面的设置有问题


更改下面两项

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

评分

参与人数 1威望 +1 收起 理由
过马路1936 + 1 厉害

查看全部评分

smallbright 发表于 2014-5-4 22:43 | 显示全部楼层
lollipooop 发表于 2013-5-12 15:39
Debug里面的设置有问题

哎??为什么我改了之后连调试页面都打不开了???
mmuuss586 发表于 2014-5-5 08:17 | 显示全部楼层
smallbright 发表于 2014-5-4 22:43
哎??为什么我改了之后连调试页面都打不开了???

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

另外这是去年的帖子,最好重新发帖,容易沉没。
syp227 发表于 2014-5-23 11:32 | 显示全部楼层
我在进行软件仿真时也碰到这个问题了,修改方法:
将“Options for Target 'Target 1'”中‘Debug’页面下,最下面一行的Diglog DLL中内容:改为DARMSTM.DLL,Parameter中内容改为:改为-pSTM32F103VE就可以了,这边STM32F103VE是我选的芯片型号
E111111 发表于 2016-8-6 13:51 | 显示全部楼层
我也来挖挖“坟”。
这是一个常见的问题。搞不懂为何Keil公司一直不重视。照理来说,一旦用户选定了MCU型号,所有有关它的配置信息自然而然地都帮你预设置了。
可是,事与愿违,仅此一项,必须要自己手动设置。而且,与之有关的信息寥寥无几。
当我查看了Keil帮助文件中有关“Dialog DLL”设置方面的内容,它只提到这项设置最好不要更改,如果要更改,请参考“器件数据库参数”。而这“器件数据库参数”中并没有与之相关的信息。
我尝试在Keil的网站上搜索,也没有得到合适的结果。
最后只好作罢,自己动手改动了一下设置。


原来的么,是这样滴:
未命名图片.png
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部