Всем привет.
Возникла странная проблема с которой я не могу разобратся.
Контроллер - STM32F100RB. Компилятор - IAR for ARM 6.21
Есть обьявление глобальных переменных:
Код
uint16_t b[50]; //тест
uint16_t b1[50]; //тест
unsigned char time_to_break=0;
unsigned int counter=0;
unsigned char ban=0;
unsigned char push_button=0;
....
еще несколько переменных
....
unsigned char test[100];
В этом случае еще до входа в главную функцию массив test заполнен символами "я".
Если записать к примеру unsigned char test[]="hello my sweety"; , то остальные переменные будут содержать неверные и произвольные значения + контроллер зависает в B HardFault_Handler.
Если обьявление массивов b1 и b2 разместить после обьявления всех остальных переменных, то будет та же ситуация. - неверные значения остальных переменных и зависание B HardFault_Handler.
В общем от перестановки местами строчек обьявления переменных конечная работа устройства очень меняется и в большинстве случаев имеет какую-то проблему.
У меня есть подозрения, что из-за различности типов (char, uint) или еще из-за чего-то происходит неправильное размещение переменных в оперативной памяти. (и они как-то накладываются) Если это так, то как решается? Если нет:
Подскажите, в чем проблема и как с ней бороться. Буду очень признателен.
Заранее благодарен за помощь.
Сообщение отредактировал ierofant - Nov 11 2011, 00:32