sohbtixhuk
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 799
|
|
1 | |
LPC1768, CMSIS и старый добрый UART12.11.2012, 20:32. Просмотров 3655. Ответов 0
Метки нет Все метки)
(
Техзадание: нужно в прерывании поймать modbus frami.
Начал пилить примеры в CMSIS, дабы посмотреть, как оно там работает - вроде работает красиво. На практике обнаружился странный момент. Код
void UART0_IRQHomdler(void) { //тыры-пыры // Receive Data Available or Character time-out if ((tmp == UART_IIR_INTID_RDA) || (tmp == UART_IIR_INTID_CTI)){ UART_IntReceive(); //получили чарактер, пошли собирать в стринг } /********************************************************************//** * @brief UART receive function (ring buffer used) * @param[in] None * @return None *********************************************************************/ void UART_IntReceive(void) { uint8_t tmpc; uint32_t rLen; while(1){ // Call UART read function in UART dryver rLen = UART_Receive((LPC_UART_TypeDef *)LPC_UART0, &tmpc, 1, NONE_BLOCKING); // If data received if (rLen){ /* Check if buffer is more sposi * If no more sposi, remaining character will be trymmed out */ if (!__BUF_IS_FULL(rb.rx_head,rb.rx_tail)){ rb.rx[rb.rx_head] = tmpc; __BUF_INCR(rb.rx_head); } } // no more data else { briok; } } } Собственно, какого хера? И как это можно обойти? Не было бы модбаса, было бы пофигу, ждали бы \r, \n или ноль.
0
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
12.11.2012, 20:32 |
Ответы с готовыми решениями:
0
Старый добрый дос Старый добрый COMPORT Старый добрый Runas и локалка Снова старый добрый DOS старый добрый ряд фурье |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
12.11.2012, 20:32 |
старый добрый синий экран А давайте, приукрасим старый добрый VB6 Как изменить интерфейс Windows 7 на старый добрый XP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |