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

 
 
> Запись во флэшь, по адресу, заданному переменной
Aptahar
сообщение Apr 21 2006, 12:02
Сообщение #1





Группа: Новичок
Сообщений: 3
Регистрация: 14-02-06
Пользователь №: 14 300



Надо:

typedef unsigned short int word;

void FLASH_WriteWord(word Adr, word Dat)
{

_BIC_SR(GIE);
while(FCTL3&BUSY == BUSY);

FCTL3 = FWKEY;
FCTL1 = FWKEY+WRT;

//Здесь надо записать Dat по адресу Adr

FCTL1 = FWKEY;
FCTL3 = FWKEY+LOCK;

_BIS_SR(GIE);
}

КАК??? без ассемблерной вставки можно? если нет, то как с ней?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Apr 21 2006, 12:27
Сообщение #2


Гуру
******

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



Дык а указатели в Си для чего придуманы?
Код
void FLASH_WriteWord(word Adr, word Dat)
{ word *pAdr=(word *)Adr;

  _BIC_SR(GIE);
  while(FCTL3&BUSY == BUSY);

  FCTL3 = FWKEY;         
  FCTL1 = FWKEY+WRT;         

*pAdr=Dat;

  FCTL1 = FWKEY;         
  FCTL3 = FWKEY+LOCK;     

  _BIS_SR(GIE);
}

А еще лучше, если бы вы сразу указатель в функцию передавали, а не значение. Потому что, если случайно переменная адреса Adr будет нечетным числом, то хрен знает куда ваша Dat запишется. Точнее понятно куда, с выравниваением по четному адресу.

Лучше будет вот так.
Код
void FLASH_WriteWord(word *pAdr, word Dat)
{
...
*pAdr=Dat;
...
}
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 5th August 2025 - 08:50
Рейтинг@Mail.ru


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