新手上路
- 积分
- 44
- 金钱
- 44
- 注册时间
- 2017-3-8
- 在线时间
- 3 小时
|

楼主 |
发表于 2017-3-11 11:34:24
|
显示全部楼层
我把代码贴上来,本来以为向上抽取出问题特征就可以了。后来想想抽取出问题特征提问会出现好多种可能。
void W25Q64_WriteFastData(unsigned int addr,unsigned char *data,unsigned int num)
{
unsigned int sector = 0 , surplus = 0 , i = 0, j = 0 ,secstart = 0;
unsigned char buff[4096];
sector = addr / 4096;
secstart = addr % 4096;
surplus = 4096 - secstart;
W25Q64_Cmd(ENABLE);
W25Q64_WriteCmd(ENABLE);
......
}
void W25Q64_Cmd(FunctionalState NewState)
{
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
}
else
{
GPIO_SetBits(GPIOA,GPIO_Pin_2);
}
}
void W25Q64_WriteCmd(FunctionalState NewState)
{
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Enable the W25Q64 of write enable */
SPI_I2S_SendData(SPI1,WRITE_ENABLE);
}
else
{
/* Disable the W25Q64 of write disable*/
SPI_I2S_SendData(SPI1,WRITE_DISABLE);
}
}
只要我在主函数里调用W25Q64_WriteFastData(),执行到W25Q64_Cmd()就会进入hardfault。当我把W25Q64_Cmd()注释掉发现执行W25Q64_WriteCmd()也会进入hardfault.
然后我猜想是FunctionalState NewState。 自己新建了一个结构体代替FunctionalState 依然还是会进入hardfault。目前猜测是因为访问了库函数里定义的结构体导致的溢出。但是我在主函数里直接调用这两个函数却是一点问题都没有. |
|