Полная версия этой страницы:
Вопрос по Crossworks
Кто может подсказать почему в Crossworks при задании указателя на адрес 0x10000
char *Flash_ptr = (char *)0x10000;
Flash_ptr указывает на 0x0000
rezident
Aug 29 2011, 13:29
Наверное потому, что этот адрес выходит за границы диапазона, представляемого 16-и битными адресами (0x0000 - 0xFFFF).
Используется MSP430F5528. У него 128кБ flash.
На строку в программе
char * Flash_ptr = (char *) 0x10000;
Компилятор выдает предупреждение
cast or assignment from 'long int' to 'unsigned char *' is compiler dependent
В примерах на IAR используется данная конструкция. Не хочется переходить на IAR.
rezident
Sep 1 2011, 13:25
Проверьте в опциях компилятора, какую именно модель памяти вы используете? Может быть как раз там ограничение на 64k. Ну и упрек компилятора к вам совершенно справедлив. Укажите явно, что константа у вас типа unsigned long. Ведь по-умолчанию она типа unsiged int, который на MSP430 16-и битный.
char * Flash_ptr = (char *) 0x10000UL;
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.