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

ARM7, ARM9, ARM11 etc.

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

Сообщение dccharacter » 07 фев 2012, 12:59

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

Все флаги после инициализации клоков проверяются, все ОК. После того как прога входит в главный цикл все работает замечательно. Проблема только в первом символе, следующим за инициализацией...
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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

Сообщение Duhas » 07 фев 2012, 14:24

мб выкакивать туда пустоту? хотя это конечно заплатка.. а не решенеие.. сам не люблю, но мб другого выхода и нет..
«Как сердцу выразить себя? … Мысль изреченная есть ложь!»
В этом мире меня подводит доброта и порядочность...
"двое смотрят в лужу, один видит лужу, другой отраженные в ней звезды"
Аватара пользователя
Duhas
 
Сообщения: 6338
Зарегистрирован: 15 сен 2007, 13:03
Откуда: Красноярск
прог. языки: ASM(МК), C(PC)
ФИО: Гагарский Андрей Александрович

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

Сообщение dccharacter » 07 фев 2012, 15:25

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

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

Странно, ведь уже раз пять делал и все было ОК с УАРТОМ. Мож вчера опять день невезения был. Ни уарт ни и2ц не заработали :-)))
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

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й символ. Проц тот же)
Аватара пользователя
Montoya
 
Сообщения: 168
Зарегистрирован: 14 авг 2007, 15:16
Откуда: Ростов-на-Дону
прог. языки: C/C++
ФИО: Герасимов Иван

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

Сообщение dccharacter » 07 фев 2012, 19:56

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

Добавлено спустя 2 часа 19 минут 43 секунды:
Да, это было оно. Спасибо Montoya!
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей


Вернуться в ARM

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5