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

 
 
> использование пойнтера в прерывании, нуждаюсь в помощи
1921
сообщение Sep 29 2010, 12:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 56
Регистрация: 29-09-10
Пользователь №: 59 820



Товарищи!
Подскажите, как можно в прерывании использовать ссылку на строку. В качестве входного параметра не получается - в С прерывания не имеют параметров.
Хотелось бы, чтобы работало примерно так: вызывается подпрограмма с входными параметрами void Prog1(char *P). Она настраивает чего-то и разрешает прерывания от UART. UART по прерываниям получает данные, которые должны складываться в String, на которую указывает P. Вопрос: как мне указать в обработчике прерывания эту вот ссылку? Что-то ничего у меня не получается...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Hoksmur
сообщение Oct 27 2010, 02:37
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 23
Регистрация: 20-09-08
Пользователь №: 40 343



Цитата(ih_ @ Oct 26 2010, 21:10) *
поинтер и есть переменная, содержащая адрес
Код
// Работа #0 - "Инициализация"
typedef        unsigned char        byte;
// можно так
byte    myString[]="My string\n"; // это Ваша строка
// или так
byte    bigString[20]="My bigest string\n";    // и это Ваша строка больше

//typedef byte* pStr;
// это указатель на строку 'myString'
volatile byte*        pMyString; // здесь мы будем хранить адрес строки 'myString'
// а это указатель на строку 'bigString'
byte*    pBigString;  // а здесь  адрес строки 'bigString'
// как Вы поняли размеры указателей одинаковы, и не зависят от длин строк

Я хоть и не силён в Cях, но насколько знаю - размер указателей на любую строку одинаков, потому что она обявлена как массив char. Не в вводите народ в заблуждение. Если только не специфика реализации.

volatile - это про что я писал. Но я в указателях так до конца и не разобрался - возможно, этот модификатор неприменим к указателю. (Хотя - с чего бы это?)

Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 27 2010, 08:22
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Hoksmur @ Oct 27 2010, 05:37) *
Я хоть и не силён в Cях, но насколько знаю - размер указателей на любую строку одинаков, потому что она обявлена как массив char. Не в вводите народ в заблуждение.
А где вы увидели разный размер указателей?
Цитата(Hoksmur @ Oct 27 2010, 05:37) *
volatile - это про что я писал. Но я в указателях так до конца и не разобрался - возможно, этот модификатор неприменим к указателю. (Хотя - с чего бы это?)
Он применим не только к самому указателю, но и к объекту, на который указывает указатель. volatile char *, char * volatile и volatile char * volatile - три совершенно разных типа указателей. А разобраться нужно обязательно.
Хотя volatile к обсуждаемой теме никаким боком не относится.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 1921   использование пойнтера в прерывании   Sep 29 2010, 12:56
- - MrYuran   В модуле с функциями для UART объявляете нужный ук...   Sep 29 2010, 12:58
|- - 1921   Цитата(MrYuran @ Sep 29 2010, 15:58) stat...   Sep 29 2010, 13:01
|- - MrYuran   Цитата(1921 @ Sep 29 2010, 17:01) Это как...   Sep 29 2010, 13:08
|- - 1921   Или подскажите, что вообще можно сделать с пойнтер...   Sep 29 2010, 13:09
|- - MrYuran   Цитата(1921 @ Sep 29 2010, 17:09) Или под...   Sep 29 2010, 13:18
|- - 1921   что не получается: Пойнтер *P объявлен глобально, ...   Sep 29 2010, 13:20
||- - MrYuran   Цитата(1921 @ Sep 29 2010, 17:20) Чисто т...   Sep 29 2010, 13:25
||- - MrYuran   Цитата(1921 @ Sep 29 2010, 17:20) Имеется...   Sep 29 2010, 13:30
||- - 1921   Можно, конечно, вывернуться через ж.. и написать k...   Sep 29 2010, 13:39
||- - MrYuran   Цитата(1921 @ Sep 29 2010, 17:39) k=P иде...   Sep 29 2010, 13:56
||- - Hoksmur   Попробуйте задействовать модификатор volatile- дол...   Oct 26 2010, 07:58
|- - 1921   Я просто по пикам помню, там пойнтеры лежали в опр...   Sep 29 2010, 13:28
- - rezident   Я видимо как-то слабо улавливаю проблему, но если ...   Sep 29 2010, 13:53
- - ih_   Цитата...Неужели нет никакой возможности получить ...   Oct 26 2010, 13:10


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 09:51
Рейтинг@Mail.ru


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