Цитата(Варяг @ Aug 23 2011, 07:17)

Подскажите, пожалуйста! использую функцию scanf("%s",&string); Потом делаю с этой строкой все что нужно. Но бывает проблема, когда в UART приходит символ "ентер", и мне как бы не надо считывать эту строку, и прервать операцию по превышению TIMEOUT, а scanf ждет, пока в порт придет еще что-нибудь. Хочу сделать, чтобы в прерывании TIM0_OVF если TIMEOUT превышен, то scanf каким-то образом переставала считывать строку.
А как вам вообще пришло в голову использовать эту функцию? То, что вы написали, лишь считывает приходящие по UART-у байты в буфер. А что мешает считывать их самому?
А этой функцией в контроллерах лучше вообще не пользоваться, как минимум из-за ее громоздкости и медлительности. К тому же все равно она в необходимых случаях вызывает atoi() и подобные - так лучше самому их вызвать, по крайней мере в этому случае все буде под контролем. Во-вторых спецификатором %s не стоит пользоваться из-за
опасности записи за пределы буфера. Что произойдет если байтов придет больше чем размер буфера?