для начала создаем структуру, которая будет размещаться во flash памяти. Я привожу кусок из свое программы, а вообще структура может быть любая. typedef const struct { char Part_number[32];// шифр прибора (ASCII) char Mnem[4];//мнемоника прибора (ASCII) char Add_Mnem[4];// дополнительная мнемоника (ASCII) char Making_Year[4]; //календарный год изготовления прибора (ASCII) char Defis_1; //Дефис (ASCII) char Making_Month[2]; //календарный месяц изготовления прибора (ASCII) char Defis_2; //Дефис (ASCII) char Making_Day[2];//календарный день изготовления прибора(ASCII) U8 UIN_Number[2];//Уникальный нмер прибора (HEX) U8 Sch_Version; //Схемотехническая верся контроллера (HEX) U8 Soft_Version; //Программная версия контроллера (HEX) U8 Calibr_Size[4]; //Размер калибровочной записи (HEX) char Calibr_Name[12]; // Имя калибровочной записи (ASCII) U8 BLK_Size[4]; // Длина BUF, байт (HEX) U8 TTO[2]; //TTO , ms (HEX) U8 FRAM_Size[4]; //длина FRAM, байт (HEX) U8 SRAM_Size[4]; //Длина SRAM, байт (HEX U8 Reserved[44]; //Резерв } nvram_data_t;
//Размещаем структуру идентификатора () в пользовательской странице Flash памяти __attribute__((__section__(".userpage"))) //".userpage" static nvram_data_t user_nvram_data; ;
Далее для работы с данными из flash памяти объявляю указатель nvram_data_t *user_page=&user_nvram_data; // объявляем указатель
Вот некоторые константы, которые будут прописываться в пользовательскую страницу
const char Part_number[32]={'x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x','x'};// шифр прибора (ASCII) const char Mnem[4]={'B','K','3','5'};//мнемоника прибора (ASCII) const char Add_Mnem[4]={' ',' ',' ',' '};// дополнительная мнемоника (ASCII) const char Making_Year[4]={'2','0','1','1'}; //календарный год изготовления прибора (ASCII)
Функция, которая пропишет константы в пользовательскую страницу:
void ID_write_init (void){ //Смотрим, записано ли что нибудь в пользовательской странице Flash (она будет пуста в новом контроллере) if (flashc_quick_user_page_read()){ //Записываем во Flash изначальные данные //Записываем новые данные во flash flashc_memcpy((void*)&user_page->Part_number,&Part_number,sizeof(user_page->Part_number),TRUE); flashc_memcpy((void*)&user_page->Mnem,&Mnem,sizeof(user_page->Mnem),TRUE); flashc_memcpy((void*)&user_page->Add_Mnem,&Add_Mnem,sizeof(user_page->Add_Mnem),TRUE); flashc_memcpy((void*)&user_page->Making_Year,&Making_Year,sizeof(user_page->Making_Year),TRUE); }
Если нужно обратиться к данным, размещенным нами в памяти, делаем так: usart_putchar(USART_ADDR, user_page->Part_number[0]); usart_putchar(USART_ADDR, user_page->Part_number[1]); ну и так далее
Если что-то не понятно или неправильно, пишите...
|