上次跑EEPROM,提示没有定义EEPROM,并提示通过熔丝位写,
由于本人,就这么一个D21开发板,所以采取,无过便是功的方法,就是先搞清楚究竟是怎么回事,再采取行动,
现在条件成熟了。
https://bbs.21ic.com/forum.php?mod=viewthread&tid=874803&extra=page%3D1%26filter%3Dtypeid%26typeid%3D380%26typeid%3D380
那就再跑一下EEPROM
首先新建ASF工程,然后加入EEPROM模块,再后打开ASF EXPLOERE,点开快速指导,按提示形成文件。
然后把熔丝位改为0x04
然后重新编译工程
下载运行
则灯亮,若下电再上电灯又亮,再重复又灭。
程序清单:
/**
* \file
*
* \brief Empty user application template
*
*/
/**
* \mainpage User Application template doxygen documentation
*
* \par Empty user application template
*
* This is a bare minimum user application template.
*
* For documentation of the board, go \ref group_common_boards "here" for a link
* to the board-specific documentation.
*
* \par Content
*
* -# Include the ASF header files (through asf.h)
* -# Minimal main function that starts with a call to system_init()
* -# Basic usage of on-board LED and button
* -# "Insert application code here" comment
*
*/
/*
* Include header files for all drivers that have been imported from
* Atmel Software Framework (ASF).
*/
/**
* Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
*/
void configure_eeprom(void);
#include <asf.h>
void configure_eeprom(void)
{ /* Setup EEPROM emulator service */
enum status_code error_code = eeprom_emulator_init();
if (error_code == STATUS_ERR_NO_MEMORY)
{
while (true) { /* No EEPROM section has been set in the device's fuses */ } }
else if (error_code != STATUS_OK) { /* Erase the emulated EEPROM memory (assume it is unformatted or * irrecoverably corrupt) */
eeprom_emulator_erase_memory();
eeprom_emulator_init(); }}
int main (void)
{
system_init();
configure_eeprom();
uint8_t page_data[EEPROM_PAGE_SIZE];
eeprom_emulator_read_page(0, page_data);
page_data[0] = !page_data[0];
port_pin_set_output_level(LED_0_PIN, page_data[0]);
eeprom_emulator_write_page(0, page_data);
eeprom_emulator_commit_page_buffer();
while (true) { }
}
|