Stm32出现RDDI DAP ERROR

起因

在一次烧录程序时,莫名奇妙出现这个错误,我还以为我板子烧了,在其他博客找一圈没找到解决办法,最后去咨询淘宝客服解决。

解决办法

将Boot0引脚跳线到3.3V,烧录一个正常的程序,然后再将Boot0跳线回来(Gnd)就可以正常下载程序了

原因

上次烧录的程序跑飞了,或者复用了烧录引脚,boot0眺到3.3是为了不运行上次烧录的代码。

原始代码是这样,如果Voltage[80]改成Voltage[100],就会出现程序跑飞的现象。

#include "stm32f4xx.h"
#include "Serial.h"
#include "Delay.h"
#include "AD7606.h"
int main(void)
{
	Serial_Init();
	AD7606Init();
	double Voltage[80]={0.0};
	while(1)
	{
		Serial_SendString("hello");
		Serial_SendString("\n");
		for(int i=0;i<80;i++){
			Serial_SendDouble(Voltage[i]);
			Serial_SendString("\n");
		}
		
	}
}

后面找了一下资料,发现可能是是栈内存溢出,因为局部变量存储在栈中,如果我们把Voltage[100]定义为全局变量,或者在使用的位置加上static关键字,变量会存储在全局数据区(SRAM 的静态区域),程序就可以正常运行了!

#include "stm32f4xx.h"
#include "Serial.h"
#include "Delay.h"
#include "AD7606.h"


double Voltage[100]={0.0};

int main(void)
{
	Serial_Init();
	AD7606Init();

    //static double Voltage[100]={0.0};
    //或者在使用时加上static
	while(1)
	{
		Serial_SendString("hello");
		Serial_SendString("\n");
		for(int i=0;i<100;i++){
			Serial_SendDouble(Voltage[i]);
			Serial_SendString("\n");
		}
		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值