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

Приглашаем на вебинар «Экономичные решения МЕAN WELL для надежных разработок» (30.09.2021)

Компания Компэл приглашает 30 сентября на вебинар посвященный экономичным решениям МЕAN WELL. На вебинаре мы рассмотрим, как решения MEAN WELL позволяют сэкономить при выборе недорогого источника питания. Будут представлены основные группы источников питания по конструктивным признакам и по областям применения в контексте их стоимости или их особенностей, позволяющих снизить затраты на электропитание конечного устройства.
Подробнее

Guest Гость

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

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

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

Share this post


Link to post
Share on other sites

Модульные RJ-соединители KLS — масштабное пополнение склада Компэл

Продуктовая линейка компании KLS на складе Компэл пополнилась модульными соединителями типа RJ. Ассортимент представлен неэкранированными соединителями RJ11, RJ12 и RJ45 для построения базовых информационных сетей, а также экранированными RJ45 с трансформатором для реализации систем передачи данных между узлами ЛВС.

Подробнее

 

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

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

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

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

Share this post


Link to post
Share on other sites

Вебинар «Microchip и современный подход к искусственному интеллекту. Разворачиваем нейронную сеть на 32-битном микроконтроллере» (13.10.2021)

Приглашаем всех желающих 13 октября 2021 г. посетить вебинар, посвященный искусственному интеллекту, машинному обучению и решениям для их реализации от Microchip. Современные среды для глубинного обучения нейронных сетей позволяют без детального изучения предмета развернуть искусственную нейронную сеть (ANN) не только на производительных микропроцессорах и ПЛИС, но и на 32-битных микроконтроллерах. А благодаря широкому портфолио Microchip, включающему в себя диапазон компонентов от микроконтроллеров и датчиков до ПЛИС, средств скоростной передачи и хранения информации, возможно решить весь спектр задач, возникающий при обучении, верификации и развёртывании модели ANN.
Подробнее

@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...

  • Сообщения

    • Так есть же такие девайсы с компрессором. Нажал кнопку и все. И сосут они довольно неплохо. Гораздо больше проблемой является быстрая выработка жала.   А вообще есть понимание того, что такое вакуумный насос? А заодно и его стоимости...   Жала должны быть легко заменяемыми и с разными диаметрами отверстий.   А посмотреть на устройство заводских изделий религия не позволяет?
    • Вы не обобщайте, @Starichok, например, сумел дать действенный совет и без схем и фото. По поводу фото платы - ок, согласен, компоновка элементов имеет влияние на общий нагрев элементов (хотя в моём случае небольшое: температура трансформатора на плате почти не отличается от его температуры вне платы при подключении проводами). Привожу фото первой версии платы ниже. Но по поводу схемы: если Вы сможете внятно объяснить причину, для чего она Вам нужна, и почему Вам недостаточно осциллограмм токов и напряжений - тогда, возможно, я выложу необходимые фрагменты, согласовав это с заказчиками. Ниже - фото последней версии трансформатора.
    • пересмотрел внимательней, пп в лайке делайте? Если набросаю Вам пригодиться?
    • Лучше накопите денежек и купите станцию с отсосом. С такими вопросами соседи лишатся квартиры. Будете всю жизнь отрабатывать.
    • По мне это недоработка программы. Это придется теперь рисовать 4 полигона, чтобы обогнуть нужную область... Благодарю за ответ.
    • Во это я вчера на мурлыкался. 
    • Мечта любого радиолюбителя сделать удобный инструмент для демонтажа. У меня есть идея такая, не знаю насколько она будет хорошей, сделать паяльник с оловоотсосом.. Да, такие существуют, но скажем так, качеством вакуума они мало радуют, тем более нужно постоянно возводить поршень, и т.п. И вот я задумался, а чтобы не сделать самому паяльник-оловоотсос. Допустим есть вакуумный насос, который выкачивает воздух в балоне, при нажатии на клапан, воздух всасывается. Для жала я выбрал стальную трубку 5мм. Корпус (ручка) дерево. Так как я раньше паяльники не мотал, подскажите пожалуйста люди с опытом, сколько выдерживает дерево нагрев? Ведь жало будет нагреваться до 300 градусов и выше. Второй вопрос. Как подобрать толщину и длину нихромовой проволоки? Эксперементальным путём? Третье, видел что мотают нихромовую проволоку на какую-то слюду или стекловолоконную ткань. На что мотать лучше? Ну и последнее, что бы трубка для насоса не расплавилась если надеть на жало, то в корпусе паяльника, есть разрыв. Но там скорее всего будет скапливаться припой, есть ли какие-то идеи чтобы заполнить этот разрыв? Боюсь стеклянная трубка треснет от жала 300 градусов. Ну и конечно, хорошо бы чтобы припой не приставал к жалу и жало не деградировало, я выбрал стальную трубку, может алюминиевая трубка лучше, как вы думаете?
  • 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...