Работа с UART (Си) » History » Version 10
Version 9 (krufter_multiclet, 04/18/2013 06:10 PM) → Version 10/33 (krufter_multiclet, 04/18/2013 06:19 PM)
h1. Работа с UART (Си)
Рассмотрим передачу и приём сообщения по UART подробнее (на Си).
Сконфигурировать UART на передачу и приём сообщения на Си также просто как и на ассемблере мультиклеточного процессора.
Кроме того на Си для работы с UART доступны полезные функции и макросы, такие как вывод значения типа int, вывод строки,
вывод заданного массива памяти данных.
В приведённых ниже примерах кода используется библиотека для работы с UART, которую необходимо подключить:
<pre>
#include <uart.h>
</pre>
h2. а)Передача по UART
h3. 1. Настраиваем UART на передачу
Первым шагом задаём структуру (все элементы структуры можно посмотреть в файле uart.h).
<pre>
UART_InitTypeDef UART_InitStructure;
</pre>
Затем инициализируем нужные параметры (незаданные параметры по умолчанию инициализируются нулём).
<pre>
UART_InitStructure.BaudRate = 38400; //скорость обмена данными
UART_InitStructure.TypeParity = 0x00000000; //тип контроля четности
UART_InitStructure.Parity = 0x00000000; //разрешение контроля четности
UART_InitStructure.FlowControl = 0x00000000; //разрешение аппаратного контроля
UART_InitStructure.Mode = 0x00000002; //разрешение передачи
</pre>
h3. 2. Разрешаем альтернативные функции порта
Для UART0:
<pre>
GPIOB->BPS = 0x00000F00;
</pre>
Для UART3:
<pre>
GPIOD->BPS = 0x00000F00;
</pre>
3. Проверка буфера передатчика на полноту
Для UART0:
<pre>
while(UART_FIFO_TX_FULL(UART0) == 1);
</pre>
Для UART3:
<pre>
while(UART_FIFO_TX_FULL(UART3) == 1);
</pre>
4.Передача байта по UART
Для UART0:
<pre>
UART_SEND_BYTE(0xAB, UART0);
</pre>
Для UART3:
<pre>
UART_SEND_BYTE(0xAB, UART3);
</pre>
Переданный байт данных можно получить с помощью программы - монитора COM-порта настроенного на данные с 1 стоп-битом,
скоростью передачи 38400 кбит/с, размером данных - 8 бит и отключённым контролем чётности.
Рассмотрим передачу и приём сообщения по UART подробнее (на Си).
Сконфигурировать UART на передачу и приём сообщения на Си также просто как и на ассемблере мультиклеточного процессора.
Кроме того на Си для работы с UART доступны полезные функции и макросы, такие как вывод значения типа int, вывод строки,
вывод заданного массива памяти данных.
В приведённых ниже примерах кода используется библиотека для работы с UART, которую необходимо подключить:
<pre>
#include <uart.h>
</pre>
h2. а)Передача по UART
h3. 1. Настраиваем UART на передачу
Первым шагом задаём структуру (все элементы структуры можно посмотреть в файле uart.h).
<pre>
UART_InitTypeDef UART_InitStructure;
</pre>
Затем инициализируем нужные параметры (незаданные параметры по умолчанию инициализируются нулём).
<pre>
UART_InitStructure.BaudRate = 38400; //скорость обмена данными
UART_InitStructure.TypeParity = 0x00000000; //тип контроля четности
UART_InitStructure.Parity = 0x00000000; //разрешение контроля четности
UART_InitStructure.FlowControl = 0x00000000; //разрешение аппаратного контроля
UART_InitStructure.Mode = 0x00000002; //разрешение передачи
</pre>
h3. 2. Разрешаем альтернативные функции порта
Для UART0:
<pre>
GPIOB->BPS = 0x00000F00;
</pre>
Для UART3:
<pre>
GPIOD->BPS = 0x00000F00;
</pre>
3. Проверка буфера передатчика на полноту
Для UART0:
<pre>
while(UART_FIFO_TX_FULL(UART0) == 1);
</pre>
Для UART3:
<pre>
while(UART_FIFO_TX_FULL(UART3) == 1);
</pre>
4.Передача байта по UART
Для UART0:
<pre>
UART_SEND_BYTE(0xAB, UART0);
</pre>
Для UART3:
<pre>
UART_SEND_BYTE(0xAB, UART3);
</pre>
Переданный байт данных можно получить с помощью программы - монитора COM-порта настроенного на данные с 1 стоп-битом,
скоростью передачи 38400 кбит/с, размером данных - 8 бит и отключённым контролем чётности.