roboforum.ru

Технический форум по робототехнике.

STM32F100RB - USART съедает первый символ

STM32F100RB - USART съедает первый символ

dccharacter » 07 фев 2012, 12:59

Что-то наступил на какие-то странные грабли - собирал скелет под новый проект, настроил USART. Прога сразу после сетапа всего харда шлет в УСАРТ "Хеллоу Ворлд!!!". А в терминал прилетает "еллоу Ворлд!!!". Все последующие отправки идут ок, символы не теряются. В режиме пошаговой отладки первая буква не теряется. Это наводит на мысль, что просто периферия не успевает стартануть. Есть ли какой-то флаг готовности у УАРТА (я совершенно наугад попробовал USART_FLAG_IDLE, но ессно это ни к чему не привело)???

Все флаги после инициализации клоков проверяются, все ОК. После того как прога входит в главный цикл все работает замечательно. Проблема только в первом символе, следующим за инициализацией...

Re: STM32F100RB - USART съедает первый символ

Duhas » 07 фев 2012, 14:24

мб выкакивать туда пустоту? хотя это конечно заплатка.. а не решенеие.. сам не люблю, но мб другого выхода и нет..

Re: STM32F100RB - USART съедает первый символ

dccharacter » 07 фев 2012, 15:25

Duhas писал(а):мб выкакивать туда пустоту? хотя это конечно заплатка.. а не решенеие.. сам не люблю, но мб другого выхода и нет..

Я почему-то не догадался погрешить вчера на мой новый переходник. Сегодня бас-пайратом посмотрю....

Странно, ведь уже раз пять делал и все было ОК с УАРТОМ. Мож вчера опять день невезения был. Ни уарт ни и2ц не заработали :-)))

Re: STM32F100RB - USART съедает первый символ

Montoya » 07 фев 2012, 17:15

Код: Выделить всёРазвернуть
// Config Printf to USART1
int fputc(int ch, FILE *f)
{
   // Loop until the end of transmission
   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
   
   USART_SendData(USART1, (uint8_t) ch);
   
   return ch;
}


Я так делал для настройки printf на прием данных через UART. Когда ожидание готовности стояло после USART_SendData, тоже терялся 1й символ. Проц тот же)

Re: STM32F100RB - USART съедает первый символ

dccharacter » 07 фев 2012, 19:56

Хм... Вот тоже - чо сам не допер? В i2c-шных функциях на ПИКе у меня именно так и есть все... Спасибо!

Добавлено спустя 2 часа 19 минут 43 секунды:
Да, это было оно. Спасибо Montoya!


Rambler\'s Top100 Mail.ru counter