Категории:

  • Программирование


  • Изобразительное искусство


  • Программирование встраиваемых систем


  • Компьютерная графика


  • WEB Разработка


  • Музыка


  • Инженерия


  • iVARIOUS


  • Mobil App


  • STM32. Передача данных по USART

    В демонстрационной плате Discovery на чипе STM32F407VG нет периферии для тестирования UART, поэтому чтоб в полной мере изучить передачу данных этим интерфейсом понадобятся некоторые дополнительные приспособления. Конечно можно обойтись и внутренними резервами, передавая сигнал от ножки к ножке замкнув их, но для более наглядной демонстрации лучше купить переходник RS-232->USB, и используя разные терминалы симулирующие работу COM порта на компьютере передавать данные на микроконтроллер, а также принимать от микроконтроллера видя сразу результат принятого текста.
    В даном примере мы будем работать с периферией USART2 в STM32F407VG.
    Начинается код традиционно с установкой тактирования выводов и самого модуля UART2 в регистре RCC_UART2. Так как порт GPIOA уже имеет некоторое значение по умолчанию в регистре GPIOA_MODER, последующие значения записываем через оператор "ИЛИ". Выводы UART2 отвечающие прием/передача (RX/TX) соответственно занимают пины PA2,PA3 и попадают в диапазон регистра GPIOA_AFRL (ножки 0-7). Номер альтернативной функции для UART2 равен 7 (вместе с UART1 и UART3, см . figure 26, Selecting an alternate function в документации). В GPIOA_AFRL устанавливаем значение соответствующее для AF7- 0x7700; (0b0111 - в биты соответствующие пинам PA2,PA3):
    STM32 В регистр скорости передачи данных устанавливаем USART2_BRR=0x683; как получить данное значение читайте в STM32. USART

    Адреса регистров USART
    Адреса регистров GPIO

    // Программа принимает данные отправляемые с компьютера в микроконтроллер по USART2

    int main (void)
    {
    uint32_t i,k=0;
    RCC_UART2=0x20000; //тактирование UART2
    //.инициализация портов для UART2…
    GPIOA_MODER|=0xA0; //выводы UART как альтернативная функция
    GPIOA_AFRL=0x7700; //номер альтернативной функции
    //…………….инициализация UART2………
    USART2_BRR=0x683; //скорость передачи/приема
    USART2_CR1=0xC; //включить передачу и прием
    USART2_CR1|=0x2000; //запуск UART, идет поиск стартового бита

    while(1)
    {
    while(!(USART2_SR&0x20)); //проверка бита RXNE на наличие принятых данных
    k=USART2_DR; //чтение принятых данных с компьютера
    if (k==0x39) //анализ полученных данных
    GPIOD_ODR=0xF000;

    else
    {
    GPIOD_ODR=0;
    }
    USART2_DR=k; //отправка данных
    while(!(USART2_SR&0x40)){}; // проверка бита TC отправлены ли данные
    }

    }



    Читайте больше в категории: Программирование встраиваемых систем

    2016-04-03 05:47:21



    Другие статьи:

    Рисунок. Деревья

    WinAPI. Button ( Кнопка ).

    STM32. ADC (АЦП). Пример кода

    Android. Intent

    STM32. Контроллеры прерываний NVIC и EXTI

    Як насправді виглядав Невицький Замок

    Maya. Карта рельефа Bump

    Java. Списки ArrayList и LinkedList

    Maya. Операция Fill Hole

    HTML. Создаем меню