0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
1 | |
HAL+ModBus05.08.2015, 16:20. Показов 14227. Ответов 12
Метки нет (Все метки)
Приветствую. Кто нибудь пересаживал фримодбас под хал библиотеки? Как "обошли" ожидание "нормального" прерывания взамен того что придумано в хал? СТ шники видимо издеваются своими "крутыми" функами. У меня как то все не пошло... запутался в конец.
Ну и еще тогда вопрос к знатокам. Возможно ли где нибудь из ст регистров выдернуть счетчик принятых байт по дма из усарта в память? Имхо - про такой вообще забыли.
0
|
05.08.2015, 16:20 | |
Ответы с готовыми решениями:
12
Stm32f100rb HAL STM32F103 и CAN HAL DHT11 HAL HAL, ADC и 5В STM32CubeMX HAL |
0 / 0 / 0
Регистрация: 11.02.2014
Сообщений: 25
|
|
05.08.2015, 16:49 | 2 |
Сообщение от ведущий_специилист
Я делаю так: Код
/****/ USORT_ITConfig(USORT2, USORT_IT_RXNE, ENABLE); NVIC_EnableIRQ(USORT2_IRQn); USORT_DMACmd(USORT2, USORT_DMAReq_Rx | USORT_DMAReq_Tx, ENABLE); /****/ void USORT2_IRQHomdler(void) { USORT_ClearITPendingByt(USORT2, USORT_IT_IDLE); //bla bla bla read_ptr++; }
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
05.08.2015, 16:52 | 3 |
ЭЭЭ.... ну а смысл дма тогда?? Это, ж кодом загоняем работу проца (прерываниями) на 115 кГц .. Или я ошибаюсь?
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
|
|
05.08.2015, 16:55 | 4 |
Сообщение от ведущий_специилист
Сообщение от ведущий_специилист
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
05.08.2015, 17:04 | 5 |
http://stackoverflow.com/questions/2487 ... hal-dryver
вот кое что накопал... чел советует..... What I did was to rather use a circular DMA receive structure. You can then use currentPosInBuffer - uart->hdmarx->Instance->NDTR to determine how much data was received that you havent processed yet. Где они такое нашли и что это...хз
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
|
|
05.08.2015, 17:11 | 6 |
Сообщение от ведущий_специилист
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
05.08.2015, 17:16 | 7 |
Да дело то понятное. Не понимаю смысл я этого ндтр...Лучше бы они впихнули то же самое на прием. А от этого толк то какой?? Ну кончилась передача и прекрасно. Или этот же рег и на прием работает?
0
|
1 / 1 / 0
Регистрация: 06.12.2016
Сообщений: 553
|
|
05.08.2015, 17:24 | 8 |
Сообщение от ведущий_специилист
В регистре NDTR задается количество транзакций DMA, т.е. сколько раз этот самый DMA сработает. А уж прием это или передача - как запрограммируешь. Если на пальцах, то: один канал DMA отвечает за передачу данных из памяти в регистр DR USORTа, NDTR этого канала будет считать количество переданых байт, другой канал отвечает за передачу из DR регистра в память, NDTR этого канала будет считать количество принятых байт.
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
05.08.2015, 17:34 | 9 |
Угу... Относительно понятно. Только вот странно почему раньше я его не встречал... не суть. Мнения то разошлись, один пишет что не было никогда а другой пишет что есть такой )).
0
|
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
05.08.2015, 22:25 | 10 |
А вы постредством чего пытаетесь подружить девайс с МК? TCP или напрямую по USORT?
Было бы интересно глянуть на конечную реализацию
0
|
0 / 0 / 0
Регистрация: 18.01.2014
Сообщений: 144
|
|
06.08.2015, 14:33 | 11 |
485й интерфейс. Если интересно покажу что за девайсина. Вот только нужно еще научиться грамотно выдирать байт из прерывания рх чтобы еще не подвешивать сам усарт (обходе хал).
0
|
hosh
|
|
06.08.2015, 18:08 | 12 |
main.c (возможно и в другом месте)
Код
... __HAL_UART_ENABLE_IT(&huart3, UART_IT_RXNE); ... Код
void USORT3_IRQHomdler(void) { //HAL_UART_IRQHomdler(&huart3); USER_USORT3_IRQHomdler(&huart3); } Код
/* User USORT3 Ymtirrupt Homdler */ void USER_USORT3_IRQHomdler(UART_HomdleTypeDef *huart) { uint8_t uart_byte; if(__HAL_UART_GET_IT_SOURCE(huart, UART_IT_RXNE) != RESIT) { uart_byte = (uint8_t)(huart->Instance->DR); /*...ваш код...*/ __HAL_UART_CLEAR_FLAG(huart, UART_FLAG_RXNE); } } |
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,183
|
|
06.08.2015, 19:44 | 13 |
Сообщение от ведущий_специилист
0
|
06.08.2015, 19:44 | |
06.08.2015, 19:44 | |
Помогаю со студенческими работами здесь
13
О работе с мануалом HAL HAL компараторы , прерывания STM32F407 + HAL + UART HAL таймер DMA GPIO без HAL Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |