Jump to content
Ivan Rusev

stm32f4 usart +terminal 1.9b передача данных

Recommended Posts

Меня интересует вот что .Я пытаюсь передать данные через терминал .А у меня он выводит не  текст а кието 0 и козябрики .Почему?

main.c

Share this post


Link to post
Share on other sites

Может не ту скорость поставили или что-то не то настроили.

Share this post


Link to post
Share on other sites
15.04.2021 в 20:31, Ivan Rusev сказал:

Я пытаюсь передать данные через терминал

Что значит "передать данные через терминал"? Можно передать данные через UART -НА- терминал, например! Тогда надо следить за соответствием настроек этого последовательного порта: COM-порта в компе (+ настройки терминала, возможно) и УАРТА в микросхеме. Вы проверяли, соответствуют? И предыдущий пост примерно про это.

Полторы ТЫСЯЧИ строчек кода не очень разумно выкладывать, без хоть какого то простейшего указания где их читать.


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

Вебинар «Экосистема MEAN WELL. Решения для любых задач электропитания» (20.05.2021)

Приглашаем 20 мая на вебинар, посвященный линейке поставок компании MEAN WELL и ее подходу к производству источников питания — как экосистемы продукции и услуг, которая позволяет подобрать оптимальный источник питания для любых задач электропитания. Рассмотрим весь спектр выпускаемой продукции MEAN WELL в области AC/DC-, DC/DC- и DC/AC-преобразователей с подробным разбором интересных и уникальных новинок, их применении и многое другое.

Подробнее

Guest Гость

Скорее всего не ту скорость выставили.

Судя по коду:   USART1->BRR  = 0x222E; 

Должно быть:  9600

Share this post


Link to post
Share on other sites

Барьерные силовые клеммы от Degson – расширение складского ассортимента Компэл

Обновленная линейка барьерных клеммных блоков Degson, поступивших на склад Компэл, содержит широкий ряд клемм, подходящих для соединения проводников различного сечения (от 22AWG до 10AWG). Барьерные клеммные колодки сочетают в себе удобство, простоту и надежность соединения. Это достигается за счет ответственного производства и использования высококачественных материалов. Винтовые клеммные блоки барьерного типа Degson предназначены в первую очередь для коммутации в сильноточных цепях, например, в распределительных и измерительных системах.

Подробнее

 

4 часа назад, ruhi сказал:

Что значит "передать данные через терминал"? Можно передать данные через UART -НА- терминал, например! Тогда надо следить за соответствием настроек этого последовательного порта: COM-порта в компе (+ настройки терминала, возможно) и УАРТА в микросхеме. Вы проверяли, соответствуют? И предыдущий пост примерно про это.

Полторы ТЫСЯЧИ строчек кода не очень разумно выкладывать, без хоть какого то простейшего указания где их читать.

Это я понял .Что скорость определяется  USART1->BRR  этим числом.И настройка терминала должна быть   на той же скорости. А вот этот момент "соответствием настроек этого последовательного порта: COM-порта в компе"Можете мне обьяснить.?И как определять USART1->BRR  соответствии скорости?.И можно в десятичной форме?

Share this post


Link to post
Share on other sites

Материалы вебинара «Решения Analog Devices для гальванической изоляции. Обзор технологий и новинок»

Опубликованы материалы вебинара, посвященного решениям Analog Devices для гальванической изоляции. На вебинаре рассказали о: технологии гальванической изоляции iCoupler, цифровых изоляторах, технологии isoPower, гальванически изолированных интерфейсах (RS-485, CAN, USB, I2C, LVDS) и многом другом. Материалы вебинара будут интересны разработчикам промышленной автоматики и медицинской техники.

Подробнее

@Ivan Rusev а как ты кодишь на регистрах не заглядывая в Reference Manual? Раздел USART там же все есть, гугл умеет переводить

 

Share this post


Link to post
Share on other sites
12 часов назад, Ivan Rusev сказал:

И как определять USART1->BRR  соответствии скорости?.И можно в десятичной форме?

Найди вот такую таблицу в описании к микросхеме своего контроллера:

image.png.1c4bf170368227d573f411f14aefa0f3.png

Очень не просто разобраться с непривычки, хотя формула примитивная (5-8класс), но раз ты в это влез - деваться некуда, никто за тебя не соберет все значения и не посчитает! А я обычно осцилографом проверяю результаты расчетов, потому что очень легко упустить какой нибудь множитель из настроек, например!


Можно сделать все! Но чем больше можно, тем больше нельзя!

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Сообщения

    • Ну, сдохнут эти управленцы вместе с пуйлом и сами катапультируются, а на их место встанут сынки патрушевых и других фсбешников.   Ну и что тогда произойдет, когда до людей что-то дойдет???
    • Маленький ребенок понимает, что когда есть выбор игрушек хорошо, а когда его нет плохо. Маленький ребенок понимает, что когда есть выбор еды за столом лучше, чем когда нет выбора. А путинисты не понимают, что когда нет политического выбора, это плохо, нет выбора всего остального, от еды и до одежды. То есть, эти люди сторонники Путина утратили способность размышлять самостоятельно и делать выбор на уровень ниже маленьких детей. Массированная официальная пропаганда вбивает обществу законченные мыслительные конструкции по любому возникающему поводу.  Пример тут в теме - "во всём виноваты пиндосы", это внушенная законченная мыслительная конструкция создана зомбоящиком путем подачи массы информации так, что доверчевый зритель сделал "самостоятельный" вывод.  Так один "самостоятельный" вывод за другим формируется зомбирование. Человек опирается на личные законченные мыслительные конструкции исходя из ложных данных, как если бы человек видевший только чёрных кошек сделал вывод, что все кошки черные. Вряд-ли что либо поменяется к лучшему потому, что влияние зомбоящика только усиливается, а люди не склонны менять свои законченные мыслительные конструкции, шаблоны. История это подтверждает - когда сталинистов увозил воронок они все до последнего были убеждены, что воронок увозит исключительно "врагов народа" и значит это недоразумение в котором товарищ Сталин непременно разберется.  В данном случае законченная мыслительная конструкция "воронок увозит исключительно врагов народа" уходила в небытие вместе с человеком.  И репрессия этого человека  для других людей, его знакомых, друзей, родственников становилась очередным "фактом"  подтверждающим  что "враги народа" даже маскируются под сталинистов, настоящих коммунистов, враг коварен, хитер и опасен!    
    • с какого перепугу?
    • Немного забегу вперед. "Большие емкости" на выходе Источника Питания (пускай будет линейным, на сетевом трансформаторе) являются "убийцами" некоторых компонентов. Поэтому наличие таких конденсаторов свидетельствует о провале разработчика, не сумевшего справиться с самовозбуждением схемы без них. Аббревиатура БП ("Блок Питания" относится к неотъёмному узлу (блоку), встраиваемому на постоянно в какое-либо устройство для его питания.  
    • хм..симптомы то какие?с юсб осциллографом поосторожнее-надо отцепится от сети(подать напряжение 24 вольта на конденсатор фильтра сервисного блока питания),съимитировать ток-на выходные клеммы подать 18-20 вольт. и снимать осциллограммы на затворах выходных полевиков.
    • Тогда второе, в вашем случае. Все своевременно закреплять и маркировать. И проблем не будет. Изгатавливал и такой на кольце. Для усилителя, 2 по 600ватт на канал. В-класс. Вот жаль что фото не делал. Так было-бы онятнее. Но шас предпочетаю, На Ш сердечнике. Благо могу теперь их достать. Какие требуются.  А вот преобразователи напряжения ,предпочитаю мотать на кольце. Так удобнее мне.
    • В декабре 2018 года глава SpaceX Илон Маск заявил о неловкости факта, что Boeing/Lockheed вынуждены использовать российский двигатель на ракете Atlas, а сам двигатель назвал великолепным. 12 февраля 2019 года главный конструктор НПО «Энергомаш» Пётр Левочкин отметил, что двигатель РД-180 сертифицирован с 10 % запасом, а это значит, что давление в его камере сгорания может быть выше 280 атмосфер. 20 декабря 2019 года ракета-носитель «Атлас V» с российскими двигателями РД-180 запустила с авиабазы на мысе Канаверал на орбиту космический корабль CST-100 Starliner компании Boeing. По состоянию на 08 апреля 2021 года (более 20 лет с момента первого пуска РН «Атлас» с РД-180) в США поставлено 116 двигателей, состоялось 92 пуска, все они признаны успешными. 16 апреля 2021 года Роскосмос сообщил об отправке в США последней партии из 6 двигателей РД-180.
  • Similar Content

    • By Ivan Rusev
      Не получается у меня запустить несколько каналов АЦП в прерывании по DMA.Чего не хватает?
    • By Ivan Rusev
      Меня интересует какие флаги в преривании устанавливать по ДМА ?Кусок кода можно?
    • By Ivan Rusev
      Можно ли на одно шине I2C подключать модуль часов реального времени ds3231 и LCD через модульI2C.У меня не получается почему?
    • By Любовь Бертулите
      Компания производитель вендинговых автоматов для розлива питьевой воды в поисках инженера-системотехника/инженера электронщика.
      График 5/2 с 9 до 18, здесь удаленный формат не рассматриваем.
      Место работы – г. Екатеринбург.
      Мы ищем специалиста, который будет делать прототипы нового для контроллера, курировать производство, проверять, дорабатывать, перепаивать, а также:
      Переписывать текущие программы на С++; Создавать программу для Android для конфигурации параметров контроллера через bluetooth. (т.е. предлагать новые, современные идеи и подходы для развития имеющихся контроллеров, которыми вы владеете); Предлагать новые программные продукты, среды разработки. Будет в тренде мира микроэлектроники, китайского контрактного производства. Может предложить совершенно новую реализацию наших текущих задач, чтобы это было лучше и эффективнее. В идеале, нам нужен специалист, который имеет:
      Опыт программирования микроконтроллеров Atmega, STM32, ESP32; Опыт работы в Altium Designer; Опыт работы в c++ (IAR, QT); Опыт работы с modbus, rs485/232, SPI. Готовы рассматривать специалистов с разным опытом, поэтому пишите, задавайте вопросы.
      Резюме можно отправить на почту lb@ktekt.ru (да, мы кадровое агентство), позвонить можно по следующему тел. 89068001212 - Любовь. 
       
    • By Ivan Rusev
      Уже не один день  сижу думаю как  запустить stm32  с eeprom для сохранения данных.И в кубе такая же история.Записую функцию чтения в майн и контролер  садится ничего не работает ? В чём дело ? Сталкивались с таким чудом.Записывал без функции тоже самое одна сторока  его убивает.
      #include"main.h"
      #define I2C_REQUEST_WRITE                       0x00//0
      #define I2C_REQUEST_READ                        0x01
      #define EEPROM_ADDRESS                   0b1010000
      #define I2C_OWNADDRESS1_7BIT             0x00004000U
      void i2c1_AF_init(void)
      {
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_0;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_1;
        GPIOB->AFR[0]|=GPIO_AFRL_AFSEL7_2    ;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL7_3;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_0;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_1;
        GPIOB->AFR[0]|=GPIO_AFRL_AFSEL6_2;
        GPIOB->AFR[0]&=~GPIO_AFRL_AFSEL6_3;
      }
      void i2c1_init(void)
      {
          GPIOB->MODER|=GPIO_MODER_MODE7_1;
          GPIOB->MODER&=~GPIO_MODER_MODE7_0;
          GPIOB->OTYPER|=GPIO_OTYPER_OT7;
          GPIOB->MODER|=GPIO_MODER_MODE6_1;
          GPIOB->MODER&=~GPIO_MODER_MODE6_0;
          GPIOB->OTYPER|=GPIO_OTYPER_OT6;
          RCC->APB1ENR|=RCC_APB1ENR_I2C1EN;
          I2C1->CR2&=~I2C_CR2_FREQ_2  ;
          I2C1->TRISE=9;
          I2C1->CCR&=~I2C_CCR_FS;
          //I2C1->OAR1|=I2C_OAR1_ADD0 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD8_9 | I2C_OAR1_ADDMODE;
           I2C1->OAR1|= I2C_OWNADDRESS1_7BIT;
          //I2C1->CR1|=I2C_CR1_SMBUS | I2C_CR1_SMBTYPE | I2C_CR1_ENARP;

          I2C1->CR1|=I2C_CR1_ACK;
          I2C1->OAR2|=I2C_OAR2_ADD2;
          I2C1->CR1|=I2C_CR1_PE;
      }
      void I2C1_SendByteByADDR1(uint16_t adres,uint8_t  data)
      {
          //uint8_t data2;
          I2C1->CR1|=I2C_CR1_ACK;
          I2C1->CR1|=I2C_CR1_START;
            while(!(I2C1->SR1&I2C_SR1_SB))
            {
            }
          (void) I2C1->SR1;
          I2C1->DR|=  EEPROM_ADDRESS |I2C_REQUEST_WRITE;
          //I2C1->DR|= addr | I2C_REQUEST_WRITE;//
           while (!(I2C1->SR1& I2C_SR1_ADDR))
           {
           }
           (void) I2C1->SR1;
           (void) I2C1->SR2;
           I2C1->DR|=(uint8_t)adres;//
           while (!(I2C1->SR1& I2C_SR1_TXE))
           {
           }
           I2C1->DR|=(uint8_t) (adres>>8) ;//
           while (!(I2C1->SR1 & I2C_SR1_TXE))
           {
           }
           I2C1->DR|=data;
           while (!(I2C1->SR1 & I2C_SR1_BTF))
           {
           }
           I2C1->CR1|=I2C_CR1_STOP;
      }
      void I2C1_readByteByADDR1(uint16_t adres,uint8_t data)
      {
          //uint8_t data2;
          //uint8_t data1;
          I2C1->CR1|=I2C_CR1_ACK;
            I2C1->CR1|= I2C_CR1_START;
            while (!(I2C1->SR1& I2C_SR1_SB)){}
            (void) I2C1->SR1;
            I2C1->DR|=  EEPROM_ADDRESS |I2C_REQUEST_WRITE;
           // I2C1->DR|= SLAVE_OWN_ADDRESS | I2C_REQUEST_WRITE;
            while (!(I2C1->SR1& I2C_SR1_ADDR)){}
            (void) I2C1->SR1;
            (void) I2C1->SR2;
            //Transmit Address begin EEPROM
            I2C1->DR|=  (uint8_t) adres;
           while (!(I2C1->SR1& I2C_SR1_TXE)){}
           I2C1->DR|=(uint8_t) (adres>>8);
            while (!(I2C1->SR1& I2C_SR1_TXE)){}
            I2C1->CR1 |= I2C_CR1_START;
             while (!(I2C1->SR1 & I2C_SR1_SB)){}
             (void) I2C1->SR1;
             I2C1->DR = EEPROM_ADDRESS|I2C_REQUEST_READ;
             while (!(I2C1->SR1 & I2C_SR1_ADDR)){}
              (void) I2C1->SR1;
              (void) I2C1->SR2;
              I2C1->CR1 &= ~I2C_CR1_ACK;
                      while (!(I2C1->SR1 & I2C_SR1_RXNE)){}

                       data= I2C1->DR;
                  //    while (!(I2C1->SR1 & I2C_SR1_RXNE)){}
                       //data2 =I2C1->DR;
                    I2C1->CR1 |= I2C_CR1_STOP;
                  //   return data;
                  //    Delay(5);
      }
      void i2c2_AF_init(void)
      {
          GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_0;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_1;
            GPIOB->AFR[1]|=GPIO_AFRH_AFSEL10_2    ;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL10_3;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_0;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_1;
            GPIOB->AFR[1]|=GPIO_AFRH_AFSEL11_2;
            GPIOB->AFR[1]&=~GPIO_AFRH_AFSEL11_3;
      }
      void i2c2_init(void)
      {
          GPIOB->MODER|=GPIO_MODER_MODE10_1;
              GPIOB->MODER&=~GPIO_MODER_MODE10_0;
              GPIOB->OTYPER|=GPIO_OTYPER_OT10;
              GPIOB->MODER|=GPIO_MODER_MODE11_1;
              GPIOB->MODER&=~GPIO_MODER_MODE11_0;
              GPIOB->OTYPER|=GPIO_OTYPER_OT11;
              //RCC->APB1ENR|=RCC_APB1ENR_I2C2EN;
      }
       
       
      вот на  этой строчке
×
×
  • Create New...