Search the Community

Showing results for tags 'STM32'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Вопрос-Ответ. Для начинающих
    • Песочница (Q&A)
    • Дайте схему!
    • Школьникам и студентам
    • Начинающим
    • Паяльник TV
    • Обсуждение материалов с сайта
  • Радиоэлектроника для профессионалов
    • Световые эффекты и LED
    • Роботы и модели на ДУ-управлении
    • Автоматика
    • Самодельные устройства к компьютеру
    • Программное обеспечение
    • Автомобильная электроника
    • Системы охраны и наблюдения. Личная безопасность
    • Питание
    • Электрика
    • Промышленная электроника
    • Ремонт
    • Металлоискатели
    • Измерительная техника
    • Мастерская радиолюбителя
    • Сотовая связь
    • Спутниковое ТВ
    • КВ и УКВ радиосвязь
    • Жучки
    • Телефония и фрикинг
    • Высокое напряжение
    • Идеи и технологии будущего
    • Справочная радиоэлементов
    • Литература
    • Разное
  • Аудио
    • FAQ, Технологии и компоненты
    • Для начинающих
    • Источники звука
    • Предусилители, темброблоки, фильтры
    • Питание аудио аппаратуры
    • Усилители мощности
    • Акустические системы
    • Авто-аудио
    • Ламповая техника
    • Гитарное оборудование
    • Прочее
  • Микроконтроллеры
    • МК для начинающих
    • AVR
    • PIC
    • STM32
    • Arduino и Raspberry Pi
    • ПЛИС
    • Другие микроконтроллеры и семейства
    • Алгоритмы
    • Программаторы и отладочные модули
    • Периферия и внешние устройства
    • Разное
  • Товары и услуги
    • Коммерческие предложения
    • Продам-Отдам, Услуги
    • Куплю
    • Уголок потребителя
    • Вакансии и разовая работа
    • Наши обзоры и тесты
  • Разное
    • Конкурсы сайта с призами
    • Сайт Паяльник и форум
    • Курилка
    • Технический английский (English)
    • Наши проекты для Android и Web
    • FAQ (Архив)
    • Личные блоги
    • Корзина
    • Вопросы с VK
  • Переделки's ATX->ЛБП
  • Киловольты юмора's Юмор в youtube
  • Радиолюбительская доска объявлений exDIY's Надежность и группы продавцов
  • Переделки's разные темы

Blogs

There are no results to display.

There are no results to display.

Marker Groups

  • Пользователи форума

Город


Сфера радиоэлектроники


Оборудование

Found 169 results

  1. Не удается проинициализировать работу 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. Где искать следует ошибку?
  2. Привет, ребят! Кто возьмется написать на С протокол взаимодействия для сети микроконтроллеров. База: STM32 с bluetooth модулем HC-06,- slave. ПК - master? За вознаграждение
  3. Пользуюсь платой stm32f103vet6. Пытался запустить ацп и мерить напряжение на PA0 через потенциометр (10к) напряжение. Опорное = 3,3 волтта. При подачи на PA0 любого напряжения результат счета = 2000 +/-. И на ноге PA0 всегда висит 1.6 вольт если она никуда не подключена. Режим работы ацп - регулярный. Помоги пожалуйста.
  4. Захотелось сделать устройство с минимальным потреблением. Первоначально хотел попробовать на 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
  5. есть 2 отладки: 1) TE-STM32F439LCD35, в упаковке, 5500р. 2) STM32F3348-DISCOVERY, 1600р. территориально - Владимирская обл., вышлю почтой, разумный торг уместен.
  6. Появилась надобность в микроконтрллере STM32 для проектирования устройства. И вопрос вот в чем - в программировании этих стм-ов. Прочитал несколько статей по их программированию - что вообще для этого нужно. Выяснил, что в них (во всех?) есть вшитый bootloader, который может сам прошить МК. То есть для этого необходимо подключить какой-либо ...to UART преобразователь, а именно TX, RX, VCC и gnd к соответсвующим ногам микроконтроллера и все? Или надо еще куда-то подавать управляющий сигнал? Еще вопрос по поводу бутлоадера - если он занимает 8 КБ (или по разному?), то МК с 16 КБ памяти, по сути, будет иметь 8 КБ для программ? Datasheet я только начинаю читать и пока еще не нашел точной информации, так что за помощь буду очень признателен
  7. Нужен программист под STM32 из Питера. Задачи: Программирование под STM32 при работе в сетях сотовой и спутниковой связи с серверами. Работа проектная, не исключено, что с трудоустройством. Оплата - договорная.
  8. Здравствуйте, мне нужна помощь с подключением дисплея WG12864 к STM32F103C8T6. А именно? Я не нашёл библиотек для него, лишь только ардуиновские. Может у кого есть своя? С STM32 опыта почти нет. Так мигал светодиодом и всё, но зато ардуину я уже знаю всё. Я перерос её и мне хочется освоить стм.
  9. Всем доброго времени суток. Общая задача такова - надо снимать сигнал (осциллограмму) с полосой до 400 кГц и временем записи 5 минут. Результат должен быть куда-то сохранен, чтобы потом была возможность сбросить цифровые данные на комп. Нужен совет по одному (пока) вопросу. Я хочу писать бинарные данные напрямую на SD-карту. Минимальная частота дискретизации 800 кГц. Разрешение АЦП можно взять 8 бит. Как вы думаете, успеет ли флешка скушать данные? Шаблон кода создаю кубом с использованием HAL, тестирую на камне 407VET6. При записи планирую использовать буфер, куда загоняю массив данных, чтобы писать не по одной выборке, а сразу пачкой. ЗЫ Есть еще вариант. Использовать в качестве промежуточной памяти вот такое https://static.chipdip.ru/lib/435/DOC001435109.pdf , сохранить туда, а потом уже на внешнюю карту. По идее, есть возможность соединить по FSMC. Но для меня это крайний вариант, ибо до этого не пробовал такое.
  10. Друзья, мне бы хотелось как-то начать "метить" прошивки, которые я заливаю в устройства на этапе разработки. Когда-то давно, когда я еще кодил для МК51 и PIC я использовал несколько ячеек в начале памяти программ, куда автоматом записывал закодированную дату. Но это я делал с помощью своей утилиты - при компиляции я запускал свой батник, который во-первых формировал небольшой ассемблерный файлик с кодом даты, он уже линковался к основному коду и получалось у меня что-то типа такого: ORG 0000h goto Begin include 'date.src' retw __day retw __month retw __year ORG 0004h goto INTERRUPT Файл date.src формировался моим батником, там присваивались значения макросам __day, __month и __year. Это ассемблер для PicMicro. Я использовал тот факт, что у него между началом пользовательского кода и единственным вектором прерывания было 4 байта, в первый байт я вставлял команду перехода на начало, а в три оставшихся байта - дату. Она была хорошо видна при считывании кода из чипа. Было очень удобно потом идентифицировать прошивку, т.к. исходники я тоже сохранял по датам. В общем, такая была доморощенная система контроля версий. Было это году в 2000-м. Сейчас я пользуюсь Atollic TrueStudio и MBED и тоже задумался о том, как мне помечать прошивки. Может быть есть какие-то штатные способы? Или может по старинке найти в коде место, куда зашивать дату что бы ее легко было видно при считывании прошивки в ST Link Utility? Спасибо заранее за любые мысли.
  11. В ролике проведено сравнение характеристик микроконтроллеров на ядре Cortex-M7 от NXP и STM, а также удобство экосистемы для разработчиков. В тестах участвовали отладочные платы: STM32F723e-Disco и i.MX RT1050 Evaluation Kit. Тестирование STM32F723e-Disco проводилось на основе материалов вебинара "Микроконтроллеры STM32F7/STM32H7 семейства Value Line"
  12. Доброго времени суток, второй день пытаюсь настроить отправку данных по UART для камня 407vg на плате discovery. Использую USART1 с ножками PB6(TX) и PB7(RX). Тактирование от внешнего кварца. Частота APB2 - 84MHz, соответственно BRR->0x222E. При заливке прошивки в камень на ПК прилетает один мусорный байт и большей ничего не происходит, при ресете МК соответственно опять прилетает один мусорный байт. Пробовал подключать через USART2, там дела обстоят чуть лучше. Байты отправляются, но в виде мусора. Притом, отправлял разные символы(почти все цифры и буква алфавита) но код на терминали был либо 0xDF либо 0xFF. /******************************************************************************/ /* LYBRARY */ /******************************************************************************/ #include "stm32f4xx.h" /******************************************************************************/ /* USE FUNCTION */ /******************************************************************************/ void InitGPIO (void); void InitRCC(void); void InitUSART2(void); void delay (uint32_t time); /******************************************************************************/ /* MAIN */ /******************************************************************************/ int main (void){ InitGPIO (); InitRCC(); InitUSART2(); while (1){ GPIOD->BSRR |= GPIO_BSRR_BS15; while(!(USART1->SR & USART_SR_TC)); USART1->DR = 'h'; delay(200000000); GPIOD->BSRR |= GPIO_BSRR_BR15; delay(200000000); } } /******************************************************************************/ /* InitGPIO */ /******************************************************************************/ void InitUSART2(void){ RCC->APB2ENR |= RCC_APB2ENR_USART1EN; RCC->AHB1ENR |= RCC_AHB1ENR_GPIOBEN; GPIOB->MODER &= ~GPIO_MODER_MODER6_0; GPIOB->MODER |= GPIO_MODER_MODER6_1; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR6; GPIOB->OTYPER &= ~GPIO_OTYPER_OT_6; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR6; GPIOB->AFR[0] |= 0x00000700; GPIOB->MODER &= ~GPIO_MODER_MODER7; GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR7; GPIOB->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR7; USART1->BRR = 0x0000222E; USART1->CR1 |= USART_CR1_UE; USART1->CR1 |= USART_CR1_TE; USART1->CR1 |= USART_CR1_RE; USART1->CR1 |= USART_CR1_RXNEIE; NVIC_EnableIRQ(USART1_IRQn); } void InitRCC(void){ RCC->CR |= ((uint32_t)RCC_CR_HSEON); while (!(RCC->CR & RCC_CR_HSERDY)); FLASH->ACR = (FLASH_ACR_PRFTEN | FLASH_ACR_LATENCY| FLASH_ACR_ICEN | FLASH_ACR_DCEN); RCC->CFGR |= RCC_CFGR_HPRE_DIV1; RCC->CFGR |= RCC_CFGR_PPRE1_DIV4; RCC->CFGR |= RCC_CFGR_PPRE2_DIV2; RCC->CFGR &= ~RCC_PLLCFGR_PLLSRC; RCC->CFGR &= ~RCC_PLLCFGR_PLLM; RCC->CFGR &= ~RCC_PLLCFGR_PLLN; RCC->CFGR &= ~RCC_PLLCFGR_PLLP; RCC->CFGR |= RCC_PLLCFGR_PLLSRC_HSE; RCC->CFGR |= RCC_PLLCFGR_PLLM_4; RCC->CFGR |= (RCC_PLLCFGR_PLLN_7 | RCC_PLLCFGR_PLLN_5 | RCC_PLLCFGR_PLLN_3); RCC->CR |= RCC_CR_PLLON; while((RCC->CR & RCC_CR_PLLRDY) == 0) {} RCC->CFGR &= ~RCC_CFGR_SW; RCC->CFGR |= RCC_CFGR_SW_PLL; while((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_1) {} } void InitGPIO (void) { RCC->AHB1ENR |= RCC_AHB1ENR_GPIODEN; GPIOD->MODER |= GPIO_MODER_MODE15_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT15; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED15_0; GPIOD->MODER |= GPIO_MODER_MODE14_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT14; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED14_0; GPIOD->MODER |= GPIO_MODER_MODE13_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT13; GPIOD->OSPEEDR |= GPIO_OSPEEDR_OSPEED13_0; GPIOD->MODER |= GPIO_MODER_MODE12_0; GPIOD->OTYPER &=~ GPIO_OTYPER_OT12; GPIOD->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR15_0; } void delay(uint32_t time){ uint32_t i; for (i=0; i<time;i++); }
  13. Добрый день, Подскажите, пожалуйста, есть ли известные алгоритмы для восстановления выпрямленного сигнала обратно в синусоидальный? (скрин во вложении). Сигнал дальше идет на цифровой фильтр для сглаживания, частота стандартная 50 Гц, амплитуда от 20 мВ до 3 В. Буду очень признателен за советы.
  14. Здравствуйте. Решил развести для себя плату с STM32F030F4P6. Сделал все по инструкциям, официальному даташиту и Getting Started Guide STM32. Хотел бы узнать, есть ли какие то косяки или ошибки: Верхний слой: Нижний: Большой синий полигон (почти весь нижний слой) - земля, единственное, кварц наверху не поместился, поэтому сделал его на нижнем тоже. Серые фигуры - "переходные отверстия", большие, т.к. у меня нет достаточно тонкого сверла и навыка сверления точно по центру. U1 - LM317LMX, R1 - 200 Om, R2;R4 - 330 Om, C1 - 10мкФ, C2-C6;C9 - 100нФ, С7;С8 - 22пФ, R3 - 1 КОм, U6 - смд кварц на 8МГц, U2 - соответственно STM32F030F4P6, LED1 - красный светодиод. Буду рад любой критике (Про резистор, которые налезает на кварц в курсе, не успел подвинуть. Желтых контуров на текстолите само собой не будет). Спасибо.
  15. Передача по SPI

    Добрый день! ПОМОГИТЕ ПОЖАЛУЙСТА! в описании для одного дисплея нашел код для STM на СИ там есть строчка которая мне не понятна, точнее смысл ее понятен но нет объявления аргументов функции помогите пожалуйста. В общем ситуация такая spi_write ( DTA, 0x00 ) spi_write ( CMD, 0x01) вот эта функция DTA - выполняет установку пина в 1 , CMD - выполняет установку пина в 0 0x00 , 0x01, .........0xFF это либо данные либо команда. и все бы ничего но все это нужно передать по HAL_SPI_Transmit помогите написать эту функцию с описанием аргументов и всех действий.
  16. В электронный журнал требуются внештатные авторы статей - опытные разработчики электроники или преподаватели профильных дисциплин ВУЗов. Тема - практическое применение электронных компонентов. Выдаем ТЗ на статьи, при необходимости высылаем отладочные платы, по итогам публикации выплачиваем гонорар.
  17. Всем привет! Задумано следующее: на малинку ставится веб-сервер (именно веб, а не HTTP, т.к. подразумевается тонкий клиент, но возможно я с терминами немного путаю), который обеспечивает управление через тонкий клиент по Ethernet, по Modbus RTU поверх RS-485 малинка должна будет управлять объектом. Т.е. задача такая: на удаленном рабочем месте визуализация объекта и его управление по Modbus. Изначально я хотел под это дело использовать какой-нибудь NUCLEO на процессоре STM32. Но почитал немного о подробностях установки TCP-IP стека и веб-сервера на STM32 и понял, что эту задачу они выполняют, но как-то сложновато. Вроде как Raspberry Pi намного лучше с этим должна справиться. Да и комьюнити намного больше. Ваши мнения, господа?
  18. Всем привет! Столкнулся с проблемой которую не удается решить. прописал в файле Drive.h так: typedef struct { uint8_t FlgL; uint8_t FlgR; uint16_t Speed; uint16_t PulseL1; uint16_t PulseL2; uint16_t PulseR1; uint16_t PulseR2; } Motor_; typedef struct { uint8_t Status; } Button_; extern struct Motor_ Motor; extern struct Button_ Button; а в с файле: #include "Drive.h" Motor.Pulse = 3; // зададим значение переменной в структуре Motor в итоге 2 ошибки редефайн.... как правильно с ними работать? За вчера и за сегодня уже наверное 1000 вариантов попробовал.
  19. Генератор сигнала на STM32

    Доброго времени суток. Сразу скажу: я не прошу писать за меня код, просто натолкните, как правильнее это реализовать. Имеется STM32F103C8T6, необходимо на ней построить одноканальный генератор сигнала, желательно разной формы (синус/меандр) с регулировкой частоты и скважности от переменного резистора. Регулировки частоты хватило бы в пределах 1Гц - 20кГц (отсюда еще вопрос, годится ли для этого F103C8T6?). Хотелось бы еще иметь разные уровни (5В/12В), но это и сам сообразить могу. Если использовать HAL таймер, то когда он уже будет запущен, можно будет менять частоту/скважность? Как реализовать переключение синус/меандр?
  20. Всем доброго времени суток! Необходима стабилизация частоты вращения двигателей по энкодерам. Энкодеры состоят из одного датчика холла на валу двигателя. Эту задачу на АВР я решил при помощи INT0 и аппаратного таймера , попробовал перенести код на STM32 . Попробовал через EXTI , результат не понравился .. Решил через таймер . void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { static uint8_t InpCaptIndexL=0, InpCaptIndexR=0; if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) // =RISING= EDGE DETECTED { // Get =RISING= EDGE Capture value if(InpCaptIndexR==0) { Motor.TimerOldR = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); InpCaptIndexR=1; } else { Motor.TimerNewR = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); InpCaptIndexR=0; } if (Motor.TimerOldR > Motor.TimerNewR) { Motor.MotorRData = (Motor.TimerOldR - Motor.TimerNewR); } else { Motor.MotorRData = (Motor.TimerNewR - Motor.TimerOldR); } // Reset Counter After Input Capture Interrupt Occurs __HAL_TIM_SET_COUNTER(&htim1,0x00); } if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) // =FALLING= EDGE DETECTED { // Get =FALLING= EDGE Capture value if(InpCaptIndexL==0) { Motor.TimerOldL = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); InpCaptIndexL=1; } else { Motor.TimerNewL = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); InpCaptIndexL=0; } if (Motor.TimerOldL > Motor.TimerNewL) { Motor.MotorLData = (Motor.TimerOldL - Motor.TimerNewL); } else { Motor.MotorLData = (Motor.TimerNewL - Motor.TimerOldL); } // Reset Counter After Input Capture Interrupt Occurs } StabMotorSpeed1(); __HAL_TIM_SET_COUNTER(&htim2, 0x00); } в интернете подсмотрел применение захвата но получается какая то каша . Осциллографом четко вижу меандр одинаковой частоты , а в юарт сыпет постоянно разные значения ... (имею ввиду переменную Motor.MotorLData и Motor.MotorRData) Тактирование 64МГц настройки таймера такие: TIM_ClockConfigTypeDef sClockSourceConfig = {0}; TIM_MasterConfigTypeDef sMasterConfig = {0}; TIM_IC_InitTypeDef sConfigIC = {0}; htim2.Instance = TIM2; htim2.Init.Prescaler = 6400; htim2.Init.CounterMode = TIM_COUNTERMODE_UP; htim2.Init.Period = 65535; htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; htim2.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE; if (HAL_TIM_Base_Init(&htim2) != HAL_OK) { Error_Handler(); } sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL; if (HAL_TIM_ConfigClockSource(&htim2, &sClockSourceConfig) != HAL_OK) { Error_Handler(); } if (HAL_TIM_IC_Init(&htim2) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_UPDATE; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK) { Error_Handler(); } sConfigIC.ICPolarity = TIM_INPUTCHANNELPOLARITY_RISING; sConfigIC.ICSelection = TIM_ICSELECTION_DIRECTTI; sConfigIC.ICPrescaler = TIM_ICPSC_DIV1; sConfigIC.ICFilter = 0; if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } if (HAL_TIM_IC_ConfigChannel(&htim2, &sConfigIC, TIM_CHANNEL_2) != HAL_OK) { Error_Handler(); } что то я или недопонимаю , или что то не так приготавливаю.. Пробовал и так: void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) { if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2) // =RISING= EDGE DETECTED { // Get =RISING= EDGE Capture value Motor.TimerR = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2); // Reset Counter After Input Capture Interrupt Occurs __HAL_TIM_SET_COUNTER(&htim1,0x00); } if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) // =FALLING= EDGE DETECTED { // Get =FALLING= EDGE Capture value Motor.TimerL = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1); // Reset Counter After Input Capture Interrupt Occurs } StabMotorSpeed(); __HAL_TIM_SET_COUNTER(&htim2, 0x00); } Результат тоже хуже чем на АВР , и в юарт сыпет каша (имею ввиду переменную Motor.TimerL и Motor.TimerR) Помогите пожалуйста разобраться в чем дело.
  21. Добрый день. Имею желание вкатиться в разработку на stm32. Не много погуглив обнаружил копеечный программатор(tt-link), но отладочной платы как у какой нибудь avr'ки не нашел(аля вставил камень, прошил, впаял в плату). Существует множество всяких discovery и им подобных, для проверки работы штука удобная, но для использовании в конечном устройстве нерациональная. Поэтому хотелось бы знать, существуют ли какие либо платы, переходники и т.д.? И если подобных промышленных вариантов нету, то единственный вариант это развести такую самостоятельно и вкорячивать переходники c LQFPхх и т.д.? P.S. Когда то видел вариант у аврки c tqfp корпусом, когда к подобной домашней плате аврку цепляли с помощью прищепки.
  22. Здравствуйте, имеется задача передачи данных от stm32 на ПК и от ПК в stm по UART. Имеется stm32f411e-disco, созданная программа на пк в Qt creator. UART передатчик - CH340. Программа для stm - Keil, настройка в cubeMX. Основные выдержки из кода Qt (mainwindow.cpp): C++ (Qt)Выделить код 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 // Настройка UART serial = new QSerialPort(this); serial->setPortName("com4"); serial->setBaudRate(QSerialPort::Baud115200); serial->setDataBits(QSerialPort::Data8); serial->setParity(QSerialPort::NoParity); serial->setStopBits(QSerialPort::OneStop); serial->setFlowControl(QSerialPort::NoFlowControl); serial->open(QIODevice::ReadWrite); /*serial->write("ok*"); */ connect(serial, SIGNAL(readyRead()), this, SLOT(serialReceived())); // Запись принятых даннх в текстовое окно void MainWindow::serialReceived() { QByteArray ba; ba=serial->readAll(); ui->label->setText(ba); qDebug()<<ba; } // Отправка "1" и "2" в зависимости от нажатой кнопки void MainWindow::on_pushButton_clicked() { serial->write("1"); } void MainWindow::on_pushButton_2_clicked() { serial->write("2"); } Настроен UART на прием и передачу. При нажатии какой-либо кнопки по UART передаётся 1 или 2ка. Так же принятая информация отображается в текстовом окне label. При замыкании RX и TX у CH340 отправленная 1 или 2 тут же принимаются программой. Программный код для stm создан в CubeMX. Там подключено два UART, один на приём, другой на передачу (можно настроить один для работы в 2 направления). Основные выдержки из кода Keil (main.c): //Настройка UART serial = new QSerialPort(this); serial->setPortName("com4"); serial->setBaudRate(QSerialPort::Baud115200); serial->setDataBits(QSerialPort::Data8); serial->setParity(QSerialPort::NoParity); serial->setStopBits(QSerialPort::OneStop); serial->setFlowControl(QSerialPort::NoFlowControl); serial->open(QIODevice::ReadWrite); /* serial->write("ok*"); */ // Transmiting "ок" to COM Port connect(serial, SIGNAL(readyRead()), this, SLOT(serialReceived())); // Отображение принятых данных в текстовом меню label void MainWindow::serialReceived() { QByteArray ba; ba=serial->readAll(); ui->label->setText(ba); qDebug()<<ba; } // Отправка 1 или 2 в зависимости от нажатой кнопки void MainWindow::on_pushButton_clicked() { serial->write("1"); } void MainWindow::on_pushButton_2_clicked() { serial->write("2"); } Выдержки из кода в Keil (main.c): // Настройка UART static void MX_USART1_UART_Init(void) { huart1.Instance = USART1; huart1.Init.BaudRate = 115200; huart1.Init.WordLength = UART_WORDLENGTH_8B; huart1.Init.StopBits = UART_STOPBITS_1; huart1.Init.Parity = UART_PARITY_NONE; huart1.Init.Mode = UART_MODE_TX_RX; huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE; huart1.Init.OverSampling = UART_OVERSAMPLING_16; if (HAL_UART_Init(&huart1) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } } // 2 массива для принятия и отправки данных uint8_t strTX[1]; uint8_t strRX[1]; // Попытка сделать что-то адекватное int strTX = 1; while(1) { HAL_UART_Transmit_IT(&huart2, (uint8_t*) strTX, 1); HAL_UART_Receive_IT(&huart2, (uint8_t*) strTX, 1); Код в keil явно кривой, в Qt вроде всё работает. Получается передать из stm в Qt, но из Qt в stm нет. Нужно получить следующее: нажимаем в Qt одну из двух кнопок, отправляется в stm либо 1, либо 2 в зависимости от выбранной кнопки. Stm принимает, обрабатывает, если 1, то загорается один светодиод, если 2, то другой. Дальше stm отправляет обратно в Qt информацию о том, какой светодиод загорелся. P.S: довольно далек от программирования, но стараюсь разобраться. Буду благодарен любой помощти, некоторые скриншоты прилагаю.
  23. В наличии 2 штуки. Цена 1300 рублей за штуку. Новые в упаковке производителя.
  24. Доброго времени! Делаю часы на газоразрядных индикаторах, которые питаются от 180в. Сделал плату, которая получает на вход ШИМ 30кГц и 5в, а выдает 180в. На Arduino сгенерировать 30кГц получалось, однако сейчас необходимо это сделать на stm32. Есть знатоки?) Спасибо!
  25. Требуется разработать блок управления сплит-системой с функцией обучения по ИК каналу через RS-485 интерфейс на базе МК STM32. Есть ТЗ и список команд управления. Разработка в 2 этапа: 1-разработка принципиальной электрической схемы с указанием элементов на основе структурной из ТЗ (можно в карандаше), 2-написание ПО для МК STM32 в соответствии с ТЗ и списком команд. Оплата поэтапно. Кому интересно - уточняйте детали и оценивайте стоимость работы. Блок управления по ИК каналу Описание.docx Команды MODBUS.xlsx