Есть плата LM3S6965
Среда разработки - Eclipse + ARM plugin + GCC
Задание: вывести меню на дисплей 4*20
меню хранится так
CODE
volatile struct MenuItem {
char LongName[21];
char VisibleFor: 3;
unsigned char SubMenuLength: 5;
};
struct MenuItem menu[] = {
{" Калибровка ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройки напряж-я ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка тока ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АПВ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АВР ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка БРУ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка Земля ", MENU_VISIBLE_MODE_USER, 0},
{" 8.vendorpass ", MENU_VISIBLE_MODE_VENDOR, 0},
{" 9.userpass 2 ", MENU_VISIBLE_MODE_USER, 0},
{" 10.vendorpass 2 ", MENU_VISIBLE_MODE_VENDOR, 0}
};
char LongName[21];
char VisibleFor: 3;
unsigned char SubMenuLength: 5;
};
struct MenuItem menu[] = {
{" Калибровка ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройки напряж-я ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка тока ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АПВ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка АВР ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка БРУ ", MENU_VISIBLE_MODE_ALL, 0},
{" Настройка Земля ", MENU_VISIBLE_MODE_USER, 0},
{" 8.vendorpass ", MENU_VISIBLE_MODE_VENDOR, 0},
{" 9.userpass 2 ", MENU_VISIBLE_MODE_USER, 0},
{" 10.vendorpass 2 ", MENU_VISIBLE_MODE_VENDOR, 0}
};
при отладке данные в этом массиве сдвигаются на 3 байта, непонятно, почему
а теперь самое интересное
вот фрагмент кода
(visible - показывает пункты меню или нет, в зависимости от уровня доступа)
CODE
void MenuInit(void){
TOTAL_MENU_ITEMS_COUNT = 10;
MakeVisibleMenu(mode);
}
//void Atas (int i) {
//i='A';
//}
void MakeVisibleMenu(char mode) {
char i;
VISIBLE_MENU_ITEMS_COUNT = -1;
TOTAL_MENU_ITEMS_COUNT = 10;
MakeVisibleMenu(mode);
}
//void Atas (int i) {
//i='A';
//}
void MakeVisibleMenu(char mode) {
char i;
VISIBLE_MENU_ITEMS_COUNT = -1;
1я функция - инициализация
2я, закомментированная - ничего не делает и нигде не вызывается
3я функция покаызвает меню (пукнты, которые нужно показать)
внимание, вопрос:
если убрать комментарии с функции - все класс, все работает (но функция-то нигде не вызывается)
если оставить или удалить функцию - сдвиг данных
что делать?