|
STM32, интерфейсы и прерывания, Куча вопросов |
|
|
|
Nov 11 2015, 08:36
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107

|
Коллеги, а подскажите, как работать с прерываниями от внешних интерфейсов. Возьмем, к примеру, CAN. - Есть две функции приема по CAN: HAL_CAN_Receive() и HAL_CAN_Receive_IT(). В чем между ними разница? Генерит ли HAL_CAN_Receive() прерывания, если нет - как ей пользоваться?
- При каких условиях запускаются обработчики прерываний USB_LP_CAN1_RX0_IRQHandler() и CAN1_RX1_IRQHandler()?
- Как пользоваться HAL_CAN_RxCpltCallback() и почему Cube не создает эту функцию вместе с прочими обработчиками прерываний?
Примеров c HAL в интернетах очень мало, поэтому я не смог найти ответов на эти вопросы... заранее спасибо.
Сообщение отредактировал nya - Nov 11 2015, 08:41
|
|
|
|
|
 |
Ответов
|
Nov 11 2015, 09:06
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107

|
Но зачем два обработчика - Handler и Callback?
|
|
|
|
|
Nov 11 2015, 09:44
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107

|
Цитата(Tanya @ Nov 11 2015, 12:23)  Это для того, чтобы Вы не возились с регистрами. HAL - Hardware Abstraction Level (Layer). Так это понятно.  Но я сейчас нашел таки рабочий пример для CAN - http://geektimes.ru/post/255534/Похоже, в моем коде были неправильно выставлены настройки фильтров, вот прерывания и не вызывались. Поэкспериментировав, выяснил, что оба этих обработчика работают одинаково хорошо. И запускаются одновременно. Поэтому все-такие непонятно в чем между ними разница и когда нужно использовать Handler, а когда - Callback. В обоих случаях "ручной труд" с регистрами равен нулю.
|
|
|
|
|
Nov 11 2015, 09:58
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 17-04-07
Пользователь №: 27 107

|
Цитата(Tanya @ Nov 11 2015, 12:46)  Нужно использовать Callback. Предполагается, что всегда. Callback вызывается в самом конце обработчика. То есть я должен писать обработчики Callback в main.c вместо того, чтобы лезть в stm32***_it.c?
|
|
|
|
|
Nov 12 2015, 02:40
|
Частый гость
 
Группа: Свой
Сообщений: 108
Регистрация: 2-02-11
Пользователь №: 62 650

|
Цитата(Tarbal @ Nov 11 2015, 21:53)  Да. Так будет правильно. Да вот хз. По идее, даже не смотря на навороченный NVIC, обработчик прерывания должен быть разумно коротким, а в HAL мало того, что обработчик раздутый до нельзя, так еще и калбек вызывается прямо из него. А пользователь в калбеке воротит кучу кода и еще вызовы своих функций. Дай бог, без блокирующих задержек.
|
|
|
|
|
Nov 12 2015, 04:33
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(drozel @ Nov 12 2015, 05:40)  Да вот хз. По идее, даже не смотря на навороченный NVIC, обработчик прерывания должен быть разумно коротким, а в HAL мало того, что обработчик раздутый до нельзя, так еще и калбек вызывается прямо из него. этот HAL переплюнул легендарный индусский код. Его даже в кач-ве справочника использовать нельзя. но и это цветочки. по идее, описание регистров всей линейки stm32 должно уместиться в пару файлов 25-30 кб, с весьма удобным API вместо 100 метровых библиотек ни о чем.
Сообщение отредактировал _Pasha - Nov 12 2015, 04:34
|
|
|
|
Сообщений в этой теме
nya STM32, интерфейсы и прерывания Nov 11 2015, 08:36 Tanya Цитата(nya @ Nov 11 2015, 11:36) Примеров... Nov 11 2015, 08:51     Tanya Цитата(nya @ Nov 11 2015, 12:58) То есть ... Nov 11 2015, 10:06  jcxz Цитата(Tanya @ Nov 11 2015, 15:23) Это дл... Nov 12 2015, 04:42   drozel Цитата(jcxz @ Nov 12 2015, 10:42) Как пра... Nov 12 2015, 05:08 Tarbal А у меня подход простой. Срочно надо сделать проек... Nov 12 2015, 23:17 MikleV Подниму тему по аналогичному вопросу.
Есть STM32 с... Nov 17 2015, 06:28 drozel Цитата(MikleV @ Nov 17 2015, 12:28) Вопро... Nov 17 2015, 07:32 MikleV Эти функции просто устанавливают биты в соответств... Nov 17 2015, 08:05 drozel Ну тык а биты описаны в даташите. С этого и надо н... Nov 17 2015, 11:02 MikleV Спасибо. Мне собственно и нужно было понять принци... Nov 17 2015, 13:46 esaulenka Какой конкретно режим? Если в его описании написан... Nov 17 2015, 15:15 ASDFG123 Как в отладчике Coocox Coide симитировать прерыван... Feb 23 2017, 03:52
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|