MDK 5 固件下载 Programming Failed 的问题

MDK 5 固件下载,擦除数据成功,但是 烧录固件(Programming)提示失败。
在这里插入图片描述
在这里插入图片描述
换了另一个 Project,可以下载成功,说明问题在 Project,而不在 目标板
在这里插入图片描述
经过问题定位,是调用了函数体里面的语句造成 Programming Failed! 的问题:

/**
  * @brief  将两位数的十进制数(decimal)转换为 BCD格式。
  * @param  value: Byte to be converted.
  * @retval Converted byte
  */
uint8_t byteToBcd(uint8_t value)
{
    
    
    uint8_t bcd_high = 0;
	
	while(value >= 10)
	{
    
    
		bcd_high++;
		value -= 10;	//执行本语句, 会引发 Programming Failed! 的问题
	}
    return  ((uint8_t)(bcd_high << 4) | value);
}

把函数换一种方式实现,再次调用函数就不会 出现 Programming Failed! 的问题:

uint8_t byteToBcd(uint8_t value)
{
    
    
	uint8_t i = 0;
    uint8_t bcd_high = 0;
	
	for(i = 0; i < 10; i++)
	{
    
    
		if(value >= 10)
		{
    
    
			bcd_high++;
			value -= 10;
		}
		else
			break;
	}
    return  ((uint8_t)(bcd_high << 4) | value);
}

猜你喜欢

转载自blog.csdn.net/Hongwei_1990/article/details/107510402