STM32下载不进去程序的可能是因为它!!!

记录调试时遇到的1/坑:
STM32下载不进去程序的原因可能之一!!!
事情是这样的:
本来flash存的是12字节的收数据,由于临时增加了2个字节的存储,参数传进来多了2个字节,但是!函数STMFLASH_WriteBytes内部的局部变量数组并没有给到宽裕的空间。程序编译不报错,编译完也能愉快得下载,但是!下完以后程序跑不正常了,想再下程序,死活下不进去了!
解决: STMFLASH_WriteBytes函数内部的wbuf长度改大
看代码:

void STMFLASH_WriteBytes(u32 WriteAddr,u8 *pBuffer,u16 NumToWrite)	
{
	uint16_t   wbuf[8];//如果参数NumToWrite=16,然而wbuf长度是7 ,程序编译不报错,
	                      //下完程序发现再次下载就下不进去Le!!!! 【wbuf长度改大解决!】
	uint8_t    i;

	if(WriteAddr<STM32_FLASH_BASE||(WriteAddr>=(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))return;//非法地址
	for(i=0;i<NumToWrite/2;i++)
	{
		wbuf[i] = (pBuffer[i*2]<<8)|pBuffer[i*2+1];			
	}
	FLASH_Unlock();						//解锁
	FLASH_ErasePage(WriteAddr);//擦除这个扇区
	STMFLASH_Write_NoCheck(WriteAddr,wbuf,NumToWrite/2); 
	FLASH_Lock();//上锁
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值