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

 
 
> Структура функций, В чём преимущество ?
pokk
сообщение Feb 14 2014, 00:34
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 3-07-11
Пользователь №: 66 028



Здравствуйте, есть вот такая хитрая структура (тут мне не совсем понятно что делает union и зачем он там нужен)
CODE

typedef struct __WIZCHIP
{
uint16_t if_mode; ///< host interface mode
uint8_t id[6]; ///< @b WIZCHIP ID such as @b 5100, @b 5200, @b 5500, and so on.
/**
* The set of critical section callback func.
*/
struct _CRIS
{
void (*_enter) (void); ///< crtical section enter
void (*_exit) (void); ///< critial section exit
}CRIS;
/**
* The set of @ref\_WIZCHIP_ select control callback func.
*/
struct _CS
{
void (*_select) (void); ///< @ref \_WIZCHIP_ selected
void (*_deselect)(void); ///< @ref \_WIZCHIP_ deselected
}CS;
/**
* The set of interface IO callback func.
*/
union _IF
{
/**
* For BUS interface IO
*/
struct
{
uint8_t (*_read_byte) (uint32_t AddrSel);
void (*_write_byte) (uint32_t AddrSel, uint8_t wb);
}BUS;
/**
* For SPI interface IO
*/
struct
{
uint8_t (*_read_byte) (void);
void (*_write_byte) (uint8_t wb);
}SPI;
// To be added
//
}IF;
}_WIZCHIP;

Заполнение её (.if_mode .id и др указывают место расположение ? т.е при таком подходе можно их местами менять ? )
Код
_WIZCHIP  WIZCHIP =
      {
      .id                  = _WIZCHIP_ID_,
      .if_mode             = _WIZCHIP_IO_MODE_,
      .CRIS._enter         = wizchip_cris_enter,
      .CRIS._exit          = wizchip_cris_exit,
      .CS._select          = wizchip_cs_select,
      .CS._deselect        = wizchip_cs_deselect,
      .IF.BUS._read_byte   = wizchip_bus_readbyte,
      .IF.BUS._write_byte  = wizchip_bus_writebyte
//    .IF.SPI._read_byte   = wizchip_spi_readbyte,
//    .IF.SPI._write_byte  = wizchip_spi_writebyte
      };

Работа с ней выглядит так
Код
WIZCHIP.CS._select();


т.е получается просто вызывается функция wizchip_cs_select()

Так вот чём преимущество такого подхода WIZCHIP.CS._select(); по сравнению с просто вызовом функции wizchip_cs_select(); ?
И на сколько дольше выполняется первый метод по сравнению со вторым?


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Lagman
сообщение May 3 2014, 10:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 875
Регистрация: 28-10-05
Пользователь №: 10 245



Callback функции часто встречаются в API библиотеках инициализации и конфигурирования микроконтроллера и его периферии, для указания вызова функции (callback) из прерывания (чаще всего), например настраивается (инициализируется) условие внешнего прерывания IO pin и тут же указывается callback, при этом программист даже не задумывается по какому вектору будет происходить вызов функции обработки прерывания, из которой уже будет произведен запуск callback.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- pokk   Структура функций   Feb 14 2014, 00:34
- - smalcom   >> т.е при таком подходе можно их местами ме...   Feb 14 2014, 10:16
- - _Pasha   Цитата(pokk @ Feb 14 2014, 04:34) Так вот...   Feb 14 2014, 13:57
|- - ar__systems   Цитата(_Pasha @ Feb 14 2014, 08:57) Код с...   Feb 17 2014, 16:36
- - AlexandrY   Цитата(pokk @ Feb 14 2014, 02:34) т.е пол...   Feb 14 2014, 14:14
- - pokk   Спасибо за помощь. Я примерно так и думал только г...   Feb 17 2014, 07:14
- - ViKo   Что такое callback функция? И в Википедии читал, и...   May 3 2014, 09:31
|- - aaarrr   Цитата(ViKo @ May 3 2014, 13:31) Что тако...   May 3 2014, 09:54
||- - ViKo   Цитата(aaarrr @ May 3 2014, 12:54) Это фу...   May 3 2014, 10:07
|- - doom13   Цитата(ViKo @ May 3 2014, 12:31) Что тако...   May 3 2014, 10:41
- - aaarrr   "передача исполняемого кода в качестве одного...   May 3 2014, 10:29
|- - ViKo   Цитата(aaarrr @ May 3 2014, 13:29) Хорошо...   May 3 2014, 10:50
||- - aaarrr   Цитата(ViKo @ May 3 2014, 14:50) В том и ...   May 3 2014, 11:08
||- - A. Fig Lee   Цитата(ViKo @ May 3 2014, 05:50) В том и ...   May 3 2014, 19:47
||- - ViKo   Цитата(A. Fig Lee @ May 3 2014, 22:47) Не...   May 3 2014, 22:01
||- - A. Fig Lee   Цитата(ViKo @ May 3 2014, 17:01) Обратно ...   May 3 2014, 23:10
|- - amaora   Цитата(aaarrr @ May 3 2014, 14:29) Хорошо...   May 5 2014, 18:22
|- - ViKo   Цитата(amaora @ May 5 2014, 21:22) Если г...   May 5 2014, 19:48
|- - amaora   Цитата(ViKo @ May 5 2014, 23:48) А если у...   May 7 2014, 05:21
- - ViKo   Handshake? По-моему, вы спекулянт (понятиями).   May 4 2014, 06:13
|- - AHTOXA   По-моему, callback - это просто. Например, есть фу...   May 4 2014, 06:29
|- - A. Fig Lee   Цитата(AHTOXA @ May 4 2014, 01:29) По-мое...   May 4 2014, 13:01
|- - AHTOXA   Цитата(A. Fig Lee @ May 4 2014, 19:01) не...   May 4 2014, 13:09
|- - A. Fig Lee   Цитата(AHTOXA @ May 4 2014, 08:09) Вы что...   May 4 2014, 15:10
|- - AHTOXA   Цитата(A. Fig Lee @ May 4 2014, 21:10) Не...   May 4 2014, 16:56
|- - A. Fig Lee   Цитата(AHTOXA @ May 4 2014, 11:56) Ага. Б...   May 4 2014, 18:36
- - ViKo   Что есть "обратный вызов"? По-моему, это...   May 4 2014, 18:19
|- - Tiro   Цитата(ViKo @ May 4 2014, 21:19) Что есть...   May 4 2014, 18:58
- - AHTOXA   Цитата(ViKo @ May 5 2014, 00:19) Что есть...   May 4 2014, 18:43
|- - ViKo   Цитата(AHTOXA @ May 4 2014, 21:43) Нормал...   May 4 2014, 18:55
||- - AHTOXA   Цитата(ViKo @ May 5 2014, 00:55) По-вашем...   May 4 2014, 19:48
||- - GetSmart   Цитата(AHTOXA @ May 5 2014, 01:48) Что ка...   May 5 2014, 19:22
|- - A. Fig Lee   Цитата(AHTOXA @ May 4 2014, 13:43) Ну хва...   May 4 2014, 23:54
|- - AHTOXA   Цитата(A. Fig Lee @ May 5 2014, 05:54) Ca...   May 5 2014, 05:26
|- - A. Fig Lee   Цитата(AHTOXA @ May 5 2014, 00:26) Неверн...   May 5 2014, 12:45
|- - AHTOXA   Цитата(A. Fig Lee @ May 5 2014, 18:45) Не...   May 5 2014, 16:58
|- - A. Fig Lee   Цитата(AHTOXA @ May 5 2014, 11:58) Если е...   May 5 2014, 19:35
- - ViKo   То есть, события, асинхронность - не при чем? Прос...   May 4 2014, 19:06
|- - Tiro   Цитата(ViKo @ May 4 2014, 22:06) То есть,...   May 4 2014, 19:10
|- - ViKo   Цитата(Tiro @ May 4 2014, 22:10) Вот у Ва...   May 4 2014, 19:17
|- - Tiro   Цитата(ViKo @ May 4 2014, 22:17) Возникло...   May 4 2014, 19:38
- - XVR   2 ТС - вы смешали в одну кучу назначение callback...   May 5 2014, 11:38
|- - ViKo   Цитата(XVR @ May 5 2014, 14:38) 2 ТС - вы...   May 5 2014, 12:12
|- - XVR   Цитата(ViKo @ May 5 2014, 16:12) Дайте уж...   May 5 2014, 13:39
- - ViKo   Из словаря. Не обязательно обратный вызов.   May 5 2014, 13:56
|- - A. Fig Lee   Цитата(ViKo @ May 5 2014, 08:56) Из слова...   May 5 2014, 15:42
- - XVR   Если из 'словаря', то это вариант 'д...   May 5 2014, 14:14
|- - ViKo   Цитата(XVR @ May 5 2014, 17:14) Если из ...   May 5 2014, 18:00
|- - XVR   Цитата(ViKo @ May 5 2014, 22:00) А мне по...   May 6 2014, 07:30
- - AHTOXA   Цитата(GetSmart @ May 6 2014, 01:22) А чт...   May 5 2014, 20:24
|- - ViKo   Цитата(AHTOXA @ May 5 2014, 23:24) Это та...   May 5 2014, 20:31
|- - GetSmart   Цитата(AHTOXA @ May 6 2014, 02:24) Это не...   May 5 2014, 20:37
- - AHTOXA   Цитата(ViKo @ May 6 2014, 02:31) А разве ...   May 5 2014, 21:59
|- - A. Fig Lee   Цитата(AHTOXA @ May 5 2014, 16:59) Вы не ...   May 5 2014, 22:48
|- - GetSmart   Цитата(A. Fig Lee @ May 6 2014, 04:48) Ес...   May 7 2014, 10:53
|- - AHTOXA   Цитата(GetSmart @ May 7 2014, 16:53) Голо...   May 7 2014, 11:40
||- - GetSmart   Цитата(AHTOXA @ May 7 2014, 17:40) Да, эт...   May 7 2014, 13:17
||- - AHTOXA   Цитата(GetSmart @ May 7 2014, 19:17) Как ...   May 7 2014, 18:28
||- - ViKo   Цитата(AHTOXA @ May 7 2014, 21:28) Это по...   May 7 2014, 18:37
|||- - AHTOXA   Цитата(ViKo @ May 8 2014, 00:37) Переведи...   May 7 2014, 19:16
|||- - ViKo   Цитата(AHTOXA @ May 7 2014, 22:16) Второй...   May 7 2014, 20:11
|||- - A. Fig Lee   Цитата(AHTOXA @ May 7 2014, 14:16) Очень ...   May 7 2014, 22:16
||- - GetSmart   Цитата(AHTOXA @ May 8 2014, 00:28) Мне не...   May 8 2014, 02:40
||- - dxp   QUOTE (AHTOXA @ May 8 2014, 01:28) Поняти...   May 10 2014, 14:40
|- - A. Fig Lee   Цитата(GetSmart @ May 7 2014, 05:53) Голо...   May 7 2014, 13:30
||- - GetSmart   Цитата(A. Fig Lee @ May 7 2014, 19:30) Вс...   May 7 2014, 13:40
|- - amaora   Цитата(GetSmart @ May 7 2014, 14:53) Драй...   May 7 2014, 16:39
- - AHTOXA   Цитата(ViKo @ May 8 2014, 02:11) Первый в...   May 8 2014, 08:08


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 12:42
Рейтинг@Mail.ru


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