Jump to content

spectral1

Members
  • Content Count

    5
  • Joined

  • Last visited

Community Reputation

0 Обычный

About spectral1

  • Rank
    Новенький

Информация

  • Город
    Томск

Электроника

  • Стаж в электронике
    Не связан с электроникой
  1. а разве данные одновременно передаются и принимаются? я пошагово проходил программу, у меня получалось так: 1) инициализация периферии 2) ожидание готовности 3) инициализация сообщения(заполнение структуры CAN_TxMsg) 4) сборка сообщения(функция CAN_wrMsg, заполнение структуры sTxMailBox[0]) 5) отправка сообщения 6) срабатывает прерывание по отправке(transmit mailbox empty(TME)) 7) срабатывает прерывание по получению сообщения 8) сборка сообщения в массиве data[] 9) передача нулевого элемента массива в переменную val_Rx и по новой. по моему все последовательно или я где-то ошибся? подскажите пожалста картинку прикрутил, чтобы было понятно. как бы получается, что в FIFO сообщение есть, а в принятых нет. или его там и не должно быть? )
  2. Со структурами и указателями разобрался, с NVIC тоже стало понятно. Скачал пример с сайта Keil, разобрался как он работает. Но есть проблема, когда пробую в эмуляторе Keil'a отправить самому себе посылку в режиме Loop back & Silent mode - то посылку видно в исходящих, но в принятых ее почему-то нет. В чем проблема? stm32 can keil example.zip
  3. Здравствуйте! Помогите пожалста начинающему. У меня отладочная плата на базе STM32f103RE Диодами помигал, прерывание по кнопке сделал, дисплей зажег. Нужно ковырять интерфейсы, до этого никогда не имел с ними дела, без подсказок мне сложно разобраться. Как работают примеры не понятно Для начала хочу хоть что-нибудь послать по CAN. Как я понял, посылки в 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()? зачем тогда нужен символ "&"? простите за глупые вопросы
  4. Здравствуйте! Помогите пожалста студенту. Пишу на СИ под модуль на базе 8051. The RF50/1/2/3/4/5 family utilizes proprietary CIP-51 microcontroller core. The CIP-51 is fully compatible with the MCS-51™ instruction set; standard 803x/805x assemblers and compilers can be used to develop software. The CIP-51 core offers all the peripherals included with a standard 8052. Вопросы: 1) что происходит на низком уровне, когда я в си объявляю глобальную переменную, куда она сохранится? В RAM? 2) что произойдет с переменной после программного ресета контроллера? в даташите сказано: 'The contents of RAM are unaffected during a reset; any previously stored data is preserved as long as power is not lost' значит - ее значение и адрес не изменятся? я так же смогу к ней обращаться, если не объявлю ее повторно(допустим сделаю проверку флага программного ресета перед объявлением)? Заранее спасибо!
×
×
  • Create New...