Цитата(koyodza @ Jun 1 2013, 18:29)

Проверьте, не установлен ли бит CLKEN в USART1->CR2
Сначала как раз так и было. И на выходе наблюдал клок от USART. Но на момент создания топика, режим USART был изменен на асинхронный.
Цитата(koyodza @ Jun 1 2013, 18:29)

Как раз при отказе от библиотечных функций часто и возникают ошибки, связанные с неправильной инициализацией периферии.
Именно потому и спросил, сталкивался кто-либо с подобным.
Цитата(koyodza @ Jun 1 2013, 18:29)

Поэтому прежде, чем писать свои функции, напрямую работающие с регистрами, лучше вначале взять и разобраться со стандартными, понять где и что не нравится, и только потом уже писать свои
Скажу больше. Пришлось даже сделать то, что делать не люблю - самостоятельно задефайнить биты в регистрах, вроде:
Код
...
typedef enum STM32_USART_SR_e
{
STM32_USART_SR_PE = 0,
STM32_USART_SR_FE = 1,
STM32_USART_SR_NE = 2,
STM32_USART_SR_ORE = 3,
STM32_USART_SR_IDLE = 4,
STM32_USART_SR_RXNE = 5,
STM32_USART_SR_TC = 6,
STM32_USART_SR_TXE = 7,
STM32_USART_SR_LBD = 8,
STM32_USART_SR_CTS = 9
} STM32_USART_SR;
typedef enum STM32_USART_CR1_e
{
STM32_USART_CR1_SBK = 0,
STM32_USART_CR1_RWU = 1,
STM32_USART_CR1_RE = 2,
STM32_USART_CR1_TE = 3,
STM32_USART_CR1_IDLEIE = 4,
STM32_USART_CR1_RXNEIE = 5,
STM32_USART_CR1_TCIE = 6,
STM32_USART_CR1_TXEIE = 7,
STM32_USART_CR1_PEIE = 8,
STM32_USART_CR1_PS = 9,
STM32_USART_CR1_PCE = 10,
STM32_USART_CR1_WAKE = 11,
STM32_USART_CR1_M = 12,
STM32_USART_CR1_UE = 13,
STM32_USART_CR1_OVER8 = 15
} STM32_USART_CR1;
...
В реальности, с учетом нехватки времени, процесс выглядит немного иначе.при необходимости задействовать в очередном проекте ту или иную периферию, под нее создается библиотека. В общем, конечно, она проверяется на предмет всех режимов, но понятно дело, что проблемы вылезают только в тех режимах, которые используются в данном проекте. На примере того же USART - если на момент создания библиотеки, в проекте использовался асинхронный режим, по понятным причинам именно он протестирован наиболее тщательно.
С другой стороны, единообразие, при кодировании, позволяет свести потенциальные ошибки к минимуму.
Цитата(scifi @ Jun 1 2013, 23:22)

Всегда манипулировал регистрами, опираясь только на Reference Manual. Всё получалось. Библиотеку не использовал из-за неприязни (кривой она показалась). Сейчас, однако, мог бы и потерпеть неприязнь, если библиотека реально ускоряет разработку: жизнь слишком коротка. Старею, наверное :-)
Подход, конечно, правильный. Но я, например, последнее время, постоянно сталкиваюсь с невысоким качеством кода. Собсно, последний раз, когда я видел/использовал пристойный код от производителей микроконтроллеров, это был USB-стек от Атмел - хорошо типизированый, с вменяемой структурой.
Что касается библиотек, то помнится
напарывался у того же Атмел, в ней же была проблема при работе с SPI, что-то касательно SS. А про ST даже говорить не хочу.
Цитата(DASM @ Jun 1 2013, 19:28)

Да никто не против, а еще лучше - привести кусок дизасма, но автор убежал.
Нет, .... Никто, никуда не убежал. Все банальнее:
2. ... нахожусь в сильном цейтноте.