不要在函数里面定义超过几十个字节的数组,不然很容易出问题。
定义全局变量,或者用内存管理
-------------------------------------------------------------------------------------
如果是在函数内部定义,应该有相关的栈大小限制的。
你一下子定义192K的数组,给堆栈和其他程序不留内存了吗?其他函数如果需要使用内存,却又申请不到内存就会出现硬件错误
-------------------------------------------------------------------------------------
看你是怎么定义的了,如果加了const,那就保存在ROM中。如果申明了数组但没初始化,那就是放在RAM中的;如果初始化了,数组放在RAM中,但数组初始化的数据放在ROM中,有程序从ROM复制到RAM。-------------------------------------------------------------------------------------我的程序进行了相关配置和修改之后,可以定义大数组了,但是前提是我必须屏蔽掉一些调用的函数,不然程序无法正确运行。
不屏蔽的话程序总会进入HardFault_Handler()函数,不知道哪里出了问题啊。--你一下子定义150K的数组,给堆栈和其他程序不留内存了吗?其他函数如果需要使用内存,却又申请不到内存就会出现硬件错误我用的是MDK,启动代码里改的-------------------------------------------------------------------------------------
在库文件里 Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
-------------------------------------------------------------------------------------
我现在用的103的芯片,库里面的例程直接就能用!STM32芯片,如何将配置数据保存到Flash中?与程序一同写入Flash的吧?
ST网上有例子程序的 如果用的是STM32f407,看以下路径 stm32f4discovery_fw\STM32F4-Discovery_FW_V1.1.0\Project\Peripheral_Examples\FLASH_Program 103的基本上差不多 注意一下,你的配置数据存放的地址不用包括在编译器link的范围之内,会出问题的。 例如:告诉编译器:flash从0x80000开始,长度0x1000,你的配置数据的存放地址可从0x81000开始。这个地址的flash编译器link的时候肯定不会用