Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

STM32 странно поведение
http://mcu-bg.com/mcu_site/viewtopic.php?f=3&t=13941
Страница 1 от 1

Автор:  stewie [ Пет Юли 24, 2015 6:01 pm ]
Заглавие:  STM32 странно поведение

Не знам какво точно заглавие да сложа, затова такова. Имам един необичаен проблем със STM32F411RE + Eclipse и АRM GCC.
Програмата използва ENC28J60, засега успешно с много копи/пейст от http://www.tuxgraphics.com, обаче някъде нещо съм объркал здраво. Имам тази фунция:
Код:
void www_server_reply(uint8_t *buf, const uint16_t dlen)
{
        make_tcp_ack_from_any(buf,info_data_len,0); // send ack for http get
        HAL_Delay(1); // Not working without this delay
        buf[TCP_FLAGS_P]=TCP_FLAGS_ACK_V|TCP_FLAGS_PUSH_V|TCP_FLAGS_FIN_V; // set flags
        make_tcp_ack_with_data_noflags(buf, dlen); // send data
}


Първата линия в кода изпраща ACK за HTTP GET заявката, която се обработва. Масивът buf е напълнен с каквото трябва от предната фунция. И така, ACK сегментът се изпраща без проблем. След това след слагане на нужните флагове се изпраща същият сегмент, но със данни след TCP хедъра (HTTP).
С две думи, работи когато си ще и само когато има малко време между двете фунции. Ако няма, същият масив се изпраща два пъти...
И в Release, и в Debug е все едно и също. Всички променливи са инлициализирани и имам само едно прекъсване, което променя само един int.
Обаче ако дебъгвам кода стъпка по стъпка не мога да хвана какво става, защото тогава винаги работи.

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/