Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SAM4L
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sifadin
Здравствуйте!
Есть примерно такая функция

Код
uint8_t read_LUN0(uint32_t addr, uint16_t nb_sector, bool trashflag, uint8_t* buffer)
{
    ..........................
    static uint32_t firstuse;
    ........................

    if (firstuse == 0)
    {
        firstuse++;
                asm(" NOP");        <- точка останова
        блаблабла
....................................
}

Функция вызывается через прерывания несколько раз. Но каждый раз переменная равна 1
те она обнуляется при вызове функции
Но ведь переменная статическая она должна сохранятся в памяти
или я что-то путаю?
RabidRabbit
ну так если при первом вызове она == 0, в указанной точке останова программа встанет ровно 1 раз, и значение переменной будет именно 1. всё, как задумал автор sm.gif
MaxiMuz
а с чего вы решили что она постоянно равна 1 ?
упс! похоже вопрос решен cool.gif
sifadin
Цитата(RabidRabbit @ Apr 18 2014, 17:41) *
ну так если при первом вызове она == 0, в указанной точке останова программа встанет ровно 1 раз, и значение переменной будет именно 1. всё, как задумал автор sm.gif

А верно) Остается выяснить почему она несколько раз встает))
RabidRabbit
Ну с этим-то всё как раз понятно - у Вас рядом с этой переменной лежит массив, за границы которого Ваша программа вылезает sm.gif
andrewlekar
Цитата
у Вас рядом с этой переменной лежит массив, за границы которого Ваша программа вылезает

Ого. А скажите тогда, почему у меня программа в hard fault падает. sm.gif
Golikov A.
думаю по той же причине, лезете не в свою область памяти...
хотя есть более правильный и подходящий ответ:
у вас программа плохая, написана неправильноwink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.