Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT什么情况,怎样解决?

2019-07-18 08:24发布

同一个原理图,分别装载了  STM32f103test.hex  、10.hex  文件,装载stm32f103test.hex 文件能正常仿真,装载10.hex文件,报错如下:Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT,是什么原因?应当怎样解决?仿真信息提示如下:
PROSPICE 8.07.02 (Build 25463) (C) Labcenter Electronics 1993-2018.
Loading HEX file '..12-LEDProjectObjects10.hex'. [U1_CM3CORE]
Read total of 1152 bytes from file '..12-LEDProjectObjects10.hex'. [U1_CM3CORE]
Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT [U1_CM3CORE]

PC13.png
PB0.png
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
csz9981
2019-07-18 16:40
[求助] Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT 什么... [复制链接]
csz9981
同一个原理图,分别装载了  stm32f103test.hex  、10.hex  文件,装载stm32f103test.hex 文件能正常仿真,装载10.hex文件,报错如下:Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT,是什么原因?应当怎样解决?仿真信息提示如下:
PROSPICE 8.07.02 (Build 25463) (C) Labcenter Electronics 1993-2018.
Loading HEX file '..12-LEDProjectObjects10.hex'. [U1_CM3CORE]
Read total of 1152 bytes from file '..12-LEDProjectObjects10.hex'. [U1_CM3CORE]
Access to register of unclocked peripheral at 0x40010C00 cause BUS_FAULT [U1_CM3CORE]
  
原因找到了:
错误程序:bsp_led.c
#include "bsp_led.h"

void LED_GPIO_Config(void)                                                                                        //LED_用到的GPIO0配置函数,
{
GPIO_InitTypeDef                 GPIO_InitStruct;                                                        //按照GPIO_InitTypeDef这种结构体(表格)的格式,定义了一个新的结构体,名字叫GPIO_InitStruct
        
GPIO_InitStruct.GPIO_Pin     =     LED_G_GPIO_PIN;                                        //把具体的参数输入到表格中,
GPIO_InitStruct.GPIO_Mode    =     GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed   =     GPIO_Speed_50MHz;
GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);                                                //利用初始化函数,把初始化GPIO需要用到的参数分别装载到对应的寄存器中,
RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);                                                //APB2时钟使能函数,打开GPIOB的时钟

}


正确程序:bsp_led.c
#include "bsp_led.h"

void LED_GPIO_Config(void)                                                                                        //LED_用到的GPIO0配置函数,
{
GPIO_InitTypeDef                 GPIO_InitStruct;                                                        //按照GPIO_InitTypeDef这种结构体(表格)的格式,定义了一个新的结构体,名字叫GPIO_InitStruct
        
GPIO_InitStruct.GPIO_Pin     =     LED_G_GPIO_PIN;                                        //把具体的参数输入到表格中,
GPIO_InitStruct.GPIO_Mode    =     GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed   =     GPIO_Speed_50MHz;
        
RCC_APB2PeriphClockCmd(LED_G_GPIO_CLK, ENABLE);     //APB2时钟使能函数,先打开GPIOB的时钟

GPIO_Init(LED_G_GPIO_PORT, &GPIO_InitStruct);        //后初始化GPIOB,利用初始化函数,把初始化GPIO需要用到的参数分别装载到对应的寄存器中,
}

原因:应当先开时钟,再初始化 SPIO。

一周热门 更多>