реклама на сайте
подробности

 
 
> Вопрос по Crossworks
Ave
сообщение Aug 29 2011, 13:12
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 12-09-05
Пользователь №: 8 478



Кто может подсказать почему в Crossworks при задании указателя на адрес 0x10000

char *Flash_ptr = (char *)0x10000;

Flash_ptr указывает на 0x0000

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
rezident
сообщение Aug 29 2011, 13:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Наверное потому, что этот адрес выходит за границы диапазона, представляемого 16-и битными адресами (0x0000 - 0xFFFF).
Go to the top of the page
 
+Quote Post
Ave
сообщение Aug 31 2011, 13:20
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 12-09-05
Пользователь №: 8 478



Используется MSP430F5528. У него 128кБ flash.

На строку в программе
char * Flash_ptr = (char *) 0x10000;
Компилятор выдает предупреждение
cast or assignment from 'long int' to 'unsigned char *' is compiler dependent

В примерах на IAR используется данная конструкция. Не хочется переходить на IAR.
Go to the top of the page
 
+Quote Post
rezident
сообщение Sep 1 2011, 13:25
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Проверьте в опциях компилятора, какую именно модель памяти вы используете? Может быть как раз там ограничение на 64k. Ну и упрек компилятора к вам совершенно справедлив. Укажите явно, что константа у вас типа unsigned long. Ведь по-умолчанию она типа unsiged int, который на MSP430 16-и битный.

char * Flash_ptr = (char *) 0x10000UL;
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 07:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.01354 секунд с 7
ELECTRONIX ©2004-2016