做个项目不容啊,原来出现了HardFaultException,现在又冒出来了。
就是修改了几个中断的优先级,问题又来了。
我在程序中定义了2个超大的数组。uint16_t Adc_Lp[2048],uint16_t Adc_Rp[2048].
为什么选择了2048,因为我看到仿真器会将数组2048以外的数据截断,没搞太明白,所以先定义这么大,其实我想定义更大
现在在函数体内,我定义了一个稍微大点的结构体(就是有那么30个 uint16_t的数据),就是将有关参数全整合进来使用。
我发现,在一个函数中访问其中的一个变量时会进入HardFaultException。
因为代码是从原设计中搬过来的,我又重新建立了一个函数,这个函数定义了这个结构体并访问其中的数据,并未出现HardFaultException。
这下,糊涂了。
请问下 STM32F407ZGT6,可以定义的最大数组数是多少。我试图修改过stack的大小,似乎没改善。
我用的ST—Link/v2。如果用单步执行函数跳转呢,这个问题倒是可以跳过去,只要一自动运行,就出问题。
我用了TIM5,TIM2,SPI,DMA中断。DMA访问外扩SRAM.
用了ucosII+ucgui。
当A收满512字节的时候,接收数据存放到B,同时,将A的数据写入SD卡。
等待B满的时候,接收数据存放到A,同时将B的数据写入SD卡。
依次循环。
会不会和 PendSV与Systick的优先级配置有关。
我就是改了其他的中断优先级,这个问题就再次跳出来了。
程序中PendSV/Systick 似乎配置成了最低,且优先级一样。
PendSV:0xff
Systick :(1<<4)-1 = 15 = 0x0f
莫非这里有猫腻?
---------------------------------
顶住! 不能沉!
一周热门 更多>