|
楼主 |
发表于 2017-6-3 09:52:13
|
显示全部楼层
#include <avr/io.h>
#include <avr/boot.h>
// 全局常量定义
// Flash区域大小(2^N=8192)
#define AVRSZ_FLASH_LOG2 13
// Flash页面大小
#define AVRSZ_PAGE_BYTE 64
void EraseFlash(void)
{
// FLASH全片擦除(除BOOTLOADER区)
unsigned short i;
for(i=0; (i&_BV(AVRSZ_FLASH_LOG2))==0; i+=AVRSZ_PAGE_BYTE)
{
// 执行一次页面擦除
boot_page_erase (i);
while(boot_rww_busy())
boot_rww_enable();
}
}
int main()
{
DDRC |=_BV(PC2);
while (1)
{
if ((PINC & _BV(PC2)) != 0)
{
EraseFlash();
}
}
}
我把程序修改成这样子可以用了,但现在还不知道怎么样从用户程序中跳过来,研究中
一上电进入BOOTLOADER,然后检测PC2,如果是高电平就删除程序,不过是要上电复位才能全部删除 |
|