Control register 1 (USART_CR1)

Первый регистр управления

Смещение (Address offset): 0x0C

Reset value: 0x0000'0000

3130292827262524
Reserved
------------------------
00000000
2322212019181716
Reserved
------------------------
00000000


15141312111098
Reserved UE M WAKE PCE PS PEIE
------rwrwrwrwrwrw
00000000
76543210
TXEIE TCIE RXNEIE IDLEIE TE RE RWU SBK
rwrwrwrwrwrwrwrw
00000000


Bits 31:14
Reserved
Forced by hardware to 0
Зарезервировано. Аппаратно установлено в 0
Bit 13
UE
USART enable
Включение USART.

При сбросе бита прекращается обмен данными, отключаются выходы и прекращается тактирование USART.

 0 : USART выключен

 1 : USART включен

Bit 12
M
Word length
Определяет длину передаваемых данных. Управляется программно, не может быть изменён во время обмена (приёма или передачи).

 0 : 1 стартовый бит, 8 бит данных, N стоповых бит

 1 : 1 стартовый бит, 9 бит данных, N стоповых бит

Bit 11
WAKE
Wakeup method
Способ пробуждения USART.

 0 : Idle Line - по свободной линии

 1 : Address Mark - по адресной метке

Bit 10
PCE
Parity control enable
Разрешение аппаратного контроля чётности.

 0 : контроль чётности отключен

 1 : контроль чётности включен

При включенном контроле четности бит контроля чётности выставляется в позицию MSb (старшего бита): 8-й бит при M=0, 9-й бит при M=1. При включении бит контроля чётности активируется после обмена текущим байтом.

Bit 9
PS
Parity selection
Тип контроля четности.

 0 : Even parity - контроль чётности

 1 : Odd parity - контроль нечётности

Тип контроля четности при смене выбирается после обмена текущим байтом.

Bit 8
PEIE
PE interrupt enable
Разрешение прерывания по ошибке контроля четности.

 0 : прерывание запрещено

 1 : прерывание разрешено.

Прерывание USART генерируется, когда обнаружена ошибка контроля четности, при этом выставляется бит PE="1" регистра USART_SR.

Bit 7
TXEIE
TXE interrupt enable
Разрешение прерывания при опустошении буфера передатчика

 0 : прерывание запрещено

 1 : прерывание разрешено.

Прерывание USART генерируется, когда переданы все биты из буфера передатчика (буфер пуст), при этом выставляется бит TXE="1" регистра USART_SR.

Bit 6
TCIE
Transmission complete interrupt enable
Разрешение прерывания по окончании передачи

 0 : прерывание запрещено

 1 : прерывание разрешено.

Прерывание USART генерируется, когда передача окончена, при этом выставляется бит TC="1" регистра USART_SR.

Bit 5
RXNEIE
RXNE interrupt enable
Разрешение прерывания по заполнению буфера приёмника

 0 : прерывание запрещено

 1 : прерывание разрешено.

Прерывание USART генерируется, когда буфер входных данных заполнен (приняты все биты), при этом выставляется бит ORE="1" или RXNE="1" регистра USART_SR.

Bit 4
IDLEIE
IDLE interrupt enable
Разрешение прерывания по окончании приёма (освобождении линии)

 0 : прерывание запрещено

 1 : прерывание разрешено.

Прерывание USART генерируется, когда приём окончен и линия стала свободна, при этом выставляется бит IDLE="1" регистра USART_SR.

Bit 3
TE
Transmitter enable
Разрешение передачи данных по USART

 0 : передача данных запрещена

 1 : передача данных разрешена

Во время передачи кратковременная установка TE="0" (с последующим TE="1") по завершении передачи формирует сигнал Свободная линия (idle line), за исключением режима смарт-карты.

После установки TE="1" перед началом передачи возникает задержка в 1 бит.

Bit 2
RE
Receiver enable
Разрешение работы приёмника USART

 0 : приёмник отключен

 1 : приёмник работает

Bit 1
RWU
Receiver wakeup
Режим работы/сна USART. Управляется программно, но может быть сброшен аппаратно во время пробуждения.

 0 : приёмник USART в "активном" режиме

 1 : приёмник USART в режиме "сна"

Bit 0
SBK
Send break
Режим использования в сообщении "break"-символов. Управляется программно. Должетн быть установлен программно и будет сброшен аппаратно за время стоп-бита "break"-символов.

 0 : нет "break"-символов в передаче

 1 : в передаче будут использованы "break"-символы.



/******************  Bit definition for USART_CR1 register  *******************/

#define  USART_CR1_SBK                       ((uint16_t)0x0001)            /* Send Break */
#define  USART_CR1_RWU                       ((uint16_t)0x0002)            /* Receiver wakeup */
#define  USART_CR1_RE                        ((uint16_t)0x0004)            /* Receiver Enable */
#define  USART_CR1_TE                        ((uint16_t)0x0008)            /* Transmitter Enable */

#define  USART_CR1_IDLEIE                    ((uint16_t)0x0010)            /* IDLE Interrupt Enable */
#define  USART_CR1_RXNEIE                    ((uint16_t)0x0020)            /* RXNE Interrupt Enable */
#define  USART_CR1_TCIE                      ((uint16_t)0x0040)            /* Transmission Complete Interrupt Enable */
#define  USART_CR1_TXEIE                     ((uint16_t)0x0080)            /* PE Interrupt Enable */

#define  USART_CR1_PEIE                      ((uint16_t)0x0100)            /* PE Interrupt Enable */
#define  USART_CR1_PS                        ((uint16_t)0x0200)            /* Parity Selection */
#define  USART_CR1_PCE                       ((uint16_t)0x0400)            /* Parity Control Enable */
#define  USART_CR1_WAKE                      ((uint16_t)0x0800)            /* Wakeup method */

#define  USART_CR1_M                         ((uint16_t)0x1000)            /* Word length */
#define  USART_CR1_UE                        ((uint16_t)0x2000)            /* USART Enable */
#define  USART_CR1_OVER8                     ((uint16_t)0x8000)            /* USART Oversmapling 8-bits */