Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

8-logoЕще один маленький шажок в изучении STM32. Попробуем слать данные на ПК через UART.

Собственно думаю не стоит объяснять как работает UART ибо об этом уже было написано достаточно слов, даже на этом сайте, поэтому сразу перейдем к реализации.

Про количество юартов у камня STM32F407VG написано скромно 4 USARTs/2 UARTs, чего в принципе должно хватить на большинство проектов. Названия ножек можно посмотреть в даташите на камень, первые которые попались это UART PA0(USART_TX) и PA1(USART_RX). Uart4 конфликтует с пользовательской кнопкой, поэтому правильнее посмотреть в Cube mx какой UART свободен. Вроде со вторым нет проблем. Поэтому PA2 — Tx, PA3 — Rx.
usart

Если почитать даташит, то напротив них стоит FT, т.е. ножки толерантны к напряжению 5В, теоретически их можно подключать напрямую к переходнику на FT232

Пишем исходник:

#include "stm32f4xx.h"
#include "stm32f4xx_gpio.h"
#include "stm32f4xx_rcc.h"
#include "stm32f4xx_usart.h"

int putcharx(int ch)
{
while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
USART_SendData(USART2, (uint8_t)ch);
return ch;
}

int main(void)
{
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);

	GPIO_InitTypeDef PORT_SETUP; //структура настройки ножки
	PORT_SETUP.GPIO_Mode = GPIO_Mode_AF; //альтернативная функция ножки
	PORT_SETUP.GPIO_OType = GPIO_OType_PP; //ножка пуш-пул
	PORT_SETUP.GPIO_Pin = GPIO_Pin_2; //2 ножка
	PORT_SETUP.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &PORT_SETUP);

	GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);

	USART_InitTypeDef uart_setup;
	uart_setup.USART_BaudRate = 9600; //скорость 9600
	uart_setup.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //нет контроля потока
	uart_setup.USART_Mode =  USART_Mode_Tx; //только передатчик
	uart_setup.USART_Parity = USART_Parity_No; //без контроля четности
	uart_setup.USART_StopBits = USART_StopBits_1; //1 стоп бит
	uart_setup.USART_WordLength = USART_WordLength_8b; //8 бит данных
	USART_Init(USART2, &uart_setup); //запись структуры

	USART_Cmd(USART2, ENABLE); //включить юарт2

	putcharx('h');
	putcharx('e');
	putcharx('l');
	putcharx('l');
	putcharx('o');

    while(1)
    {
    }
}

Цепляем Rx к Tx. Не забываем, земли Discovery и Ft232 нужно соединять обязательно!!! Запускаем терминал. Собственно hello пришло, если жмакнуть кнопку сброса придет еще раз 🙂
uart4_stm32

Если нужно передать переменную, и ее величина не превышает одного байта, то можно передавать также как символы.
char x = 50;
putchar(x);
Если переменная больше одного байта придется ее «склеивать», как это сделать написано в статье про указатели http://avr-start.ru/?p=1966

Проект кокосика

6 комментариев: UART STM32F4

  • constanta:

    добрый день у вас пример передачи данных через Юарт в стм32 в компиляторе кок0с и осциллограф через виртуальный копорт ,переделал програму на C#, вот мне интересно возможно вы знаете почему при считывании данных с виртуального ком порта приходит те данные, которые я записал в Юарт например у вас » гэлов » в кокосе а у меня при считывания в с # 0 всегда чтобы я неминяв !! Может вы знаете в чем проблема ?? спасибо

  • admin:

    если принимаете, нужно определяющие условия посмотрите http://avr-start.ru/?p=2230 хоть описано для авр, но суть таже

  • admin:

    Обновлено

  • Алексей:

    «теоретически их можно подключать напрямую к переходнику на FT232»
    Если использовать микросхему FT232RL, то ее питать можно 3,3в и не парится с уровнями.

  • У меня к вам вопрос .Почему вы не публикуете чегото нового?По программированию контроллеров?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Счетчик
Яндекс.Метрика