не стал вникать в код из первого сообщения, но так понял, что контроллер шлёт данные, а программа на компе иногда не видит некоторых символов. Если контроллер работает только на передачу и со стороны компьютера никаких запросов нет, то для начала нужно определиться с неисправным звеном - МК или ПК. Самый простой способ - распаралеллить данные с МК на два компьютера с запущенной принимающей программой и сравнивать. Если пропуски будут совпадать на обоих компах, то проблема в МК, если вразнобой, то косяк на стороне ПК. Если выяснится, что дело в контроллере, то нужно будет оставить только функцию отправки данных, отключить все лишние прерывания и в бесконечном цикле гнать заранее известные данные на ПК. Если опять будут встречаться пропуски, то дело может быть в частоте кварца и если эти пропуски раз в час-два, то тут уместно будет применить контрольную сумму, если есть возможность изменить программу на компьютере. Для проверки плавания частоты можно всю плату погеть феном, одновременно наблюдая за отправляемыми данными.
Цитата(greenhorn @ Jul 27 2014, 21:49)

Тут у меня огромная проблема с отсутствием (или немогу найти, или просто не понимаю) лоичной и последовательной документации по CMSIS и Standart Peripherial Library. По первому вообще больше по хидерам разбираюсь. Способ наверное традициооно программерский но как по мне -неправильный. В общем пока у меня с этим не сростается....
упорядоченое описание на русском языке функций CMSIS есть в приложении к этой книге
http://www.twirpx.com/file/1136980/ В продаже она есть в терраэлектронике.