STM32 Чет Нечет

Возился с USART STM32 почти все, что мне надо давно работало в режиме без контроля четности, а с включением оной не работало, недолгое гугление и проверка дали ответ.

В режиме контроля четности необходимо принудительно переключаться в 9-ти битный режим. Причем в процессе нашел какую то презентацию по STM32 и там была ошибка — т.е. even с 8-ю битами.
В иллюстрацию кусок кода инициализации усарта:

void SetupUSART1(uint16_t baud, uint16_t par)
{
	             NVIC_InitTypeDef  NVIC_InitStructure;
	             GPIO_InitTypeDef  GPIO_InitStructure;
	             USART_InitTypeDef USART_InitStructure;

                     // скорость
	             USART_InitStructure.USART_BaudRate            = baud;

                     //четность
	             USART_InitStructure.USART_Parity              = par;
                     
                      //проверяем в какая четность и переключаем 8 или 9 бит
	             if(USART_InitStructure.USART_Parity==USART_Parity_No)
	               USART_InitStructure.USART_WordLength          = USART_WordLength_8b;
	               else
	               USART_InitStructure.USART_WordLength          = USART_WordLength_9b;

	             USART_InitStructure.USART_StopBits            = USART_StopBits_1;

	             USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
	             USART_InitStructure.USART_Mode                = USART_Mode_Rx | USART_Mode_Tx;

//бла бла бла дальше

  • -1
  • 04 июля 2012, 20:47
  • GYUR22

Комментарии (19)

RSS свернуть / развернуть
А даташит прочитать? там это чётко прописано.
0
ну на все датащиты читалки не напасешся :)
0
кстати какой?
0
Самый большой. рефман называецца. 23.3.7.
И это я стм32 не занимаюсь при том, но найти — просто открыть содержание.
О таком «специфическом поведение» знаю из стм8, когда уарт запускал на нем, без четности.
0
Вы знаете я нет и при поиске мне сей документ не попался.
И конечно привычка вредная, но часто инфу можно быстрее найти в гугле чем тупить в датищит.
0
+1. Без чтения рефмана, по-моему, вообще ничего использовать не выйдет. Так что держать под рукой всегда.

Это атмелы разбаловали: у них даташит — это все вместе. А у стм даташит — распиновка и отличия конкретной модели, а рефман на все семейство в целом.
+3
Вы все конечно правы бесспорно, но зачем тогда вообще статьи писать все же есть в мануале?
0
Статьи писать исключительно чтобы почесать свое ЧСВ, потом сидеть и смотреть, как растет рейтинг, и выяснять, кто же заминусовал :)
+1
Все таки Реф-ман напсан на англицком, и тем у кого с языком не очень хорошо легко можно моск сломать, разбираясь в том что напридумывали буржуи. Потому качественно написанная статья все-же рулит, так как там простым и понятным языком разложенно многое, что не всегда можно понять из реф-мана. Я тут на днях курил Таймер #1, который расширенный, дабы запустить на нем ШИМ на одном из каналов. Сам по себе ШИМ запустился легко, но только гадил сволочь на остальные каналы, которые использоваличь для других целей и вообще небыли подключены к таймеру. Когда замучался разбирать мануал, нагуглил простенькую справку на GAW.ru, включил каналы как положенно и все заработало…

А так конечно первым делом в реф-мануал лезу. Кстати ДИ в своих вводных статьях про кортексы давал на него прямую ссылку.
0
Тащемта, даже при знании английского, оно то вроде и читается, но воспринимается намного хуже, чем на родном славянском. Ну, и хорошая статья это как конспект, что ли, или практическое руководство
0
а вот и кусок из презентации по STM32 как вам?
0
И что? Код соответствует комментариям: устанавливается длина посылки 8 бит с четностью, что соответствует DataBits=7 + ParityBit=1 == WordLength=8. Семь бит данных — вполне себе популярный режим «в древности».
0
вполне себе популярный режим «в древности».
а мы че в древности живем?
если да то берите шкуру и бубен :)
0
Не поверите, бубен есть
0
вот вам шкура :)
+1
Я посмотрел датащит и там конечно про это есть без базара, но сцуко кривым таким языком что я даже зная уже о чем речь, минут десять вкуривал, что там на 195 таблице написано, а не зная кучу времени бы угрохал.
0
Переферия у СТМ знатная и глючная. по этому кроме рефмана имейте под рукой и еррату. ошибка то не обязана сразу при написании проявится. А зная о возможных косяках зарание, можно снизить шанс из ловли при написании.
0
Там дело не столько в языке, сколько в структуре этого самого мануала. Когда регистры какого-нибудь периферийного узла описываются, скажем, на 490-й странице, тактирование на 121-й, а настройка соответствующих пинов этак на 300-й. Хорошо хоть гиперссылки есть.
И порой попадаются совершенно неочевидные вещи в самой архитектуре: попробуй догадайся, что для того, чтобы задействовать routing interface, нужно непременно затактировать компаратор. Это в STM8L; в STM32 подобные же приколы, но их в полтора раза больше. :)
+1
USART_StructInit сделали?
не забывайте что структуры локальные в стеке, и там может оказаться любой мусор…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.