Как я понял, посылки в CAN формируются без адреса, устройство само определяет получать ли ей посылку или отвергнуть. Сам кадр выглядит так:

Не могу понять для себя последовательность действий при формировании кадра. Сейчас я это вижу примерно так:
1) Разрешаю тактирование портов ввода-вывода, CAN, альтернативных функций порта(в моем случае)
2) Настраиваю порты ввода-вывода. Tx - выход push-pull, Rx - input with pull-up/pull-down
3) Настраиваю CAN:
-режим работы. к примеру ставлю нормал
-выставляю baudrate. в регистр нужно заносить значение в герцах в шестнадцатеричной форме?
-задаю длину посылки, выставляю RTR и IDE
-что за регистр NVIC? и почему его нет в даташите, а в примерах он настраивается:
Код: Выделить всё
NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
-собираю посылку и отправляю. на этом этапе тоже не понятно, посылка собирается с помощью массива? как отправить посылку?
и еще пара вопросов по СИ:
1) void Init_RxMes(CanRxMsg *RxMessage);
в скобках перечисляются входные параметры функции, что значит звездочка? и почему запятой нет?
2) uint8_t KeyNumber = 0x0;
unit8_t - говорит о том, что число восьмибитное?
3)
Код: Выделить всё
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);здесь собирается структура и результат обрабатывается через NVIC_Init()? зачем тогда нужен символ "&"?
простите за глупые вопросы:)
