IgnatiusF

Программирование микроконтроллеров STM32 по UART

26 posts in this topic

IgnatiusF    2

Oxford, вот тут вы зря. У меня данный проект уже полностью готов на микроконтроллере от Atmel, и вопрос состоит в том, чтобы перенести его на более продвинутый STM32. 

Что до отладки, мне уже предложили воспользоваться отладочной платой с STM32 для отладки программы, пока печатная плата устройства будет ехать их Китая.

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum 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...

  • Similar Content

    • By IgnatiusF
      Не удается проинициализировать работу UART2 на скорость 19200 бод.
      Не вызывается прервание совсем, отсылаются постоянно нули на всех скоростях, если ставить System clock switch в 01 (HSE). При работе от RC генератора выдает уже просто не то, что нужно. 
      Кварц рабочий, и вообще все работает, при использовании библиотек HAL.
      SysTick выключил потому, что были подозрения на конлфикт приоритетов.
      Внизу представлена именно та часть кода программы, которая не работает, то есть сам UART.
      Проект скоро сдавать, а использовать готовую библиотеку HAL не хочется совсем, уже несколько дней парюсь и не могу найти проблему. Попробовал разобраться что пишет в регистры HAL, однако не смог т.к. не хватает знаний, значения регистров все такие же, кроме PLL (не используется) и RCC_CR1 (в HAL почему-то полностью равен 0). Проверял передачей данных по UART. Регистр BRR не удалось считать т.к. он только для записи. У меня записано так:
      USART1->BRR = 0x412;  //20MHz/16/19200 = 65,104.
      Где искать следует ошибку?
    • By small girl
      Привет, ребят! Кто возьмется написать на С протокол взаимодействия для сети микроконтроллеров. База: STM32 с bluetooth модулем HC-06,- slave. ПК - master?

      За вознаграждение
    • Guest Semen
      By Guest Semen
      Пользуюсь платой stm32f103vet6. Пытался запустить ацп и мерить напряжение на PA0 через потенциометр (10к) напряжение. Опорное = 3,3 волтта.  При подачи на  PA0 любого напряжения результат счета = 2000 +/-. И на ноге PA0 всегда висит 1.6 вольт если она никуда не подключена. Режим работы ацп - регулярный.  Помоги пожалуйста.
    • By COKPOWEHEU
      Захотелось сделать устройство с минимальным потреблением. Первоначально хотел попробовать на f103, но глянул в даташит и ужаснулся: в любом режиме сна у него потребление больше, чем у AVR-ок. Ну хорошо, в standby сравнимо, но этот режим мне не подходит. Поискал аналоги, вроде бы серия L1 больше подходит для автономных устройств. Да еще там есть вкусности вроде сенсорных кнопок и управления ЖКИ (не то чтобы необходимо, но поиграться стоит).
      Собрал макетную плату с высокочастотным (8 МГц) и низкочастотным (32768) кварцами, стабилизатором, кнопками и светодиодами (из кода понятно что где висит). Запускаю RTC с пробуждением раз в секунду (в финальном устройстве просыпаться будет еще чаще) и пытаюсь увести в режим stop. Но вместо потребления в единицы микроампер получаю пол-миллиампера. Либо я какую-то периферию не отключил (да я их и не включал вроде...), либо как-то неправильно увожу в сон (вроде все по даташиту...), либо лыжи не едут.
      Вот ключевые моменты кода (остальное во вложении):
      void enable_btn(){ RCC->AHBENR |= RCC_AHBENR_GPIOBEN; GPIO_config(JBTN); //настройка на вход с минимальной скоростью, без подтяжке } void disable_all(){ GPIOA->MODER = 0xFFFFFFFF; //all to analog in GPIOB->MODER = 0xFFFFFFFF; //all to analog in GPIOC->MODER = 0xFFFFFFFF; //all to analog in GPIOD->MODER = 0xFFFFFFFF; //all to analog in GPIOA->OSPEEDR = 0; //all to low speed (наверное, неважно) GPIOB->OSPEEDR = 0; //all to low speed (наверное, неважно) GPIOC->OSPEEDR = 0; //all to low speed (наверное, неважно) GPIOD->OSPEEDR = 0; //all to low speed (наверное, неважно) GPIOA->OTYPER &=~ 0x0000FFFF; GPIOB->OTYPER &=~ 0x0000FFFF; GPIOC->OTYPER &=~ 0x0000FFFF; GPIOD->OTYPER &=~ 0x0000FFFF; RCC->AHBENR &=~ (RCC_AHBENR_GPIOAEN | RCC_AHBENR_GPIOBEN | RCC_AHBENR_GPIOCEN | RCC_AHBENR_GPIODEN); clock_MS(); } void go_sleep(){ RCC->APB1ENR |= RCC_APB1ENR_PWREN;//вкл тактирование PWR SCB->SCR |= SCB_SCR_SLEEPDEEP; //для M3 разрешаем sleepdeep PWR->CR &=~PWR_CR_PDDS;//выбираем режим Power Down Deepsleep PWR->CR &=~PWR_CR_CWUF ; //очищаем wakeup flag PWR->CR |= PWR_CR_LPSDSR; //уменьшаем voltage regulator __WFI(); } ... //когда нужно заснуть disable_all(); go_sleep(); enable_btn(); Пробовал совсем не переключаться с MSI на HSE, это влияет только на рабочий режим, во сне как было 500 мкА так и остается.
      L1_sleep.rar
  • Сообщения

    • Шаг? Это плата 21*225= 4725мм или 4.7м получается. Может, вся длина 225мм? А вообще для параллельной напайки (если они все в ряд) возьмите полоску текстолита и по линейке ножовочным полотном процарапайте фольгу вдоль - вот вам и плата. Заодно и охлаждение будет хорошее за счет полионов.
    • Вообще не показатель. Ныне покойный сосед был чистокровным татарином, о чем сам часто упоминал , несмотря на чисто русское имя и фамилию: Алексей Соколов. "Я татарин на лицо, да с фамилией хохляцкой, отчего ж к тоске кабацкой угодил под колесо..." © Ю.Шевчук.   
    • Хотел в 84 мм высотой вписаться, хотябы 1,5кВт и по цене чтобы подешевле (поэтому первичка 0.9 в 3 провода, провод с "распродажи" - какой был остатоток и сколько было тем и мотал) - это главное, остальное как повезёт. Ещё с оглядкой на то, чем и как изначально намотано было. Вечером срин выложу
    • Хорошо ты выбрал термин)). Раньше это были сограждане
    • Я поездил по миру и увидел, что совецкосоюзовцев везде хватает. А главное, что все к ним нормально относятся (включая американцев и британцев)
    • Если так, то "справочная информация" должна содержать в себе всю статистику за определенный период. Кто помнит, что считал счетчик час назад? Вы же хотите, что бы предыдущие значения затирались? Было 100, стало 98, затем 88... Но кто вспомнит, что было 100, если это было месяц назад. А если такой прибор будет стоять на нескольких самолетах? У всех показания разные. Кто помнить будет? Или будете куда-то записывать? Логичнее было бы, что бы прибор запоминал показания, потом анализировал и в случае резкого изменения параметров, подавал сигнал с выводом информации. Например: три дня назад было 100, а сегодня вдруг стало 88 - есть повод задуматься и проверить.