Данная библиотека позволяет использовать до 6 UART микроконтроллера.
UART, которые будут использоваться, должны быть объявлены в Н- и C-файлах. В структуре "UART []" должны быть указанны все необходимые параметры (то есть расположение выводов, скорость передачи данных и т.д.).
Библиотека содержит функции передачи данных по UART и функцию проверки, пришла ли строка (передатчик должен поддерживать функцию тегов, например возврат указателя к началу строки).
Прием данных происходит в фоновом режиме с использованием прерывания.
В примере используется 2 UART:
- COM2 по UART2 [TX=PA2], [RX=PA3] с 115200 Baud
- COM3 по UART3 [TX=PD8], [RX=PD9] с 115200 Baud
Требования:
Подключаемые модули CooCox-IDE: GPIO, USART, MISC.
Поддерживаемые библиотеки: отсутствуют.
Перечисления:
typedef enum { NONE = 0, // нет идентификатора в конце LFCR, // новая строка + перевод каретки (0x0A,0x0D) CRLF, // перевод каретки + новая строка (0x0D,0x0A) LF, // только новая строка (0x0A) CR // только перевод каретки (0x0D) }UART_LASTBYTE_t; typedef enum { RX_EMPTY = 0, // Ничего не принято RX_READY, // Содержание приемного буфера RX_FULL // Приемный буфер заполнен }UART_RXSTATUS_t;
Функции:
void UB_Uart_Init(void); // инициализация UARTов void UB_Uart_SendByte(UART_NAME_t uart, uint16_t wert); // Отправить байт через UART void UB_Uart_SendString(UART_NAME_t uart, char *ptr, UART_LASTBYTE_t end_cmd); // отправить строку через UART UART_RXSTATUS_t UB_Uart_ReceiveString(UART_NAME_t uart, char *ptr); // прием строки через UART
Пример использования:
//-------------------------------------------------------------- // File : main.c // Datum : 24.02.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.0 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der UART-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_uart.h" int main(void) { char buf[RX_BUF_SIZE]; // буфер для приема данных UART_RXSTATUS_t check; SystemInit(); // инициализация настроек кварца // инициализация UART // Com2 и Com3 работают со скоростью 115200 бод UB_Uart_Init(); // Отправка двух строк через UART (с переходом к началу строки и возврат каретки) UB_Uart_SendString(COM2,"Hier ist UART2 [PA2,PA3]",LFCR); UB_Uart_SendString(COM3,"Hier ist UART3 [PD8,PD9]",LFCR); while(1) { // проверка, приняты ли данные на UART2 check=UB_Uart_ReceiveString(COM2,buf); if(check==RX_READY) { // Если данные были получены // вернуть в Echo UB_Uart_SendString(COM2,buf,LFCR); } } }
В приложении проект CooCox и отдельная библиотека для использования в других проектах, а также программа - терминал. Автор оригинала статьи просит задавать вопросы на его сайте на немецком или английских языках.
Прикрепленные файлы:
- ub_stm32f4_uart_v104_rus.rar (5 Кб)
- Demo_12_UART_rus.rar (188 Кб)
- Discovery_Terminal_UB_v106.zip (279 Кб)
Комментарии (2) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]