Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

H3c8d9e25cf884cc0ac306d23b6107e2dZ.jpg

сотни чего рублей?.Рабочая плата.В HAL е работает.Все прерывания.Я купил за 230 гривень.А Это немного больше умножить в два если рублей.

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

@Ivan Rusev У меня есть такая плата без деталей, я бы купил сам глючный чип, просто ради интереса. Я знаю что вы из Украины (хакнул вашу почту), но я писал не вам.

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

@Darth_Vader Кроме этих проблем есть еще проблемы с тактированием, человек же не совсем вроде глупый. Тем более есть инфа о подделках.

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, Darth_Vader сказал:

А второй вывод светика к чему?

Ну человек же пишет что 1 раз делает BSSR включается, второй раз делает то же самое - выключается.

Какая разница к чему. Вопрос что у него выводы как toggle работают якобы через регистр. Значит либо не верно проверяет, либо мистика)) Либо где то в коде что то есть еще)

Ссылка на комментарий
Поделиться на другие сайты

я думаю учителя скорее всего в коде или в компиляторе.У меня таких две платы от разных производителей.А если в камне.То какой контроллер тогда вы мне посоветуете? если cortexm3 он у меня есть там всё как часы.

Есть проект можете посмотреть.

Ссылка на комментарий
Поделиться на другие сайты

MasterElectric чудеса были из за плохой пайки стороны выводов чипа которые идут на кварц, вот и были чудеса, а как чип к плате придавил, а потом и пропаял, и дисплей запустился сразу и светики нормально работают и тактирование и задержки. Паял его пол года назад на скорую руку, так было проверил тогда какой-то кусок кода он работал, а потом эту плату закинул, а тут понадобилось и чудеса пошли), причем два дня угробил, и анализатор подключал и дебагером смотрел все вроде работает, но тот же дисплей не запускался, так как задержки не те были и т.д..

Ссылка на комментарий
Поделиться на другие сайты

Нет тут другое .Ацп работает  в основном цикле.А в прерывании в майне прописываю ADC1->CR2|= ADC_CR2_SWSTART;  и все прерывания перестают работать .Почему? Значить я что то не то делаю. Может проблема с тактированием.А может не всё я прописал.Вообще С Новым 2020 годом!

Ссылка на комментарий
Поделиться на другие сайты

@Электронщик Ну вот даже под Новый Год нет чудес... всех с Новым Годом!!! Всем творческих успехов и чтобы код легко ложился и правильно работал.

Ссылка на комментарий
Поделиться на другие сайты

On 12/29/2019 at 10:45 PM, Ivan Rusev said:

void adc_IRQhanler(void)

Нельзя Новый год начинать с незаконченными делами. Обработчик не правильно назван, надо типа

void ADC_IRQHandler(void) с учетом регистра

Ссылка на комментарий
Поделиться на другие сайты

void adc_IRQhanler(void) в этом вся причина спасибо я потерял бдительность .С НОВЫМ ГОДОМ! ПРЕРЫВАНИЕ ЗАРАБОТАЛО.Я ВАМ БЛАГОДАРЕН,УКРАИНА ВСЕГДА БУДЕТ С РОССИЕЙ ВМЕСТЕ,БОЛЬШОЕ ВАМ СПАСИБО.

void ADC_IRQHandler(void) Вот так правильно.

Извините  я ученик.

Ссылка на комментарий
Поделиться на другие сайты

MasterElectric Классное пожелание, тем более что с кодом всегда много проблем))), даже бывает сто раз код пишешь и уже до этого натыкался на грабли, и все равно ту да же наступаешь, особенно из - за невнимательности, или когда кодишь ночью.

Ссылка на комментарий
Поделиться на другие сайты

У меня мастера паяльника возникла проблема есть прерывание по ацп инжектированных каналов  я или неправильно делаю что в хале что в ручную прерывание  работает после нажатия reset как в одну так и в другу сторону.Диод загорается как в одну так и в другу гаснет после ресета.

/*
 * main.c
 *
 *  Created on: 8 лист. 2019 р.
 *      Author: Ivan
 */


#include"main.h"
#include "stm32f4xx.h"
#include "stm32f407xx.h"
volatile unsigned int pauza=0;
volatile unsigned char flag=0;
volatile unsigned char n=0;
volatile unsigned int adc_data=0;
void EXTI1_IRQHandler(void)
{
    EXTI->PR |=EXTI_PR_PR1;
    n++;
}
void ADC_IRQHandler(void)
{
     if(ADC1->SR & ADC_SR_JEOC) //ждем пока первое преобразование завершится
     {
                        ADC1->SR &=~ ADC_SR_JEOC;
                          adc_data = ADC1->JDR1;

                           if(adc_data > 2024)
                         {

                               GPIOC->BSRR |= GPIO_BSRR_BS13;
                         }
                         else
                         {

                             GPIOC->BSRR |= GPIO_BSRR_BR13;
                         }
     }
}
void TIM3_IRQHandler (void)
{
  if(TIM3->SR & TIM_SR_UIF)
  {
    TIM3->SR &= ~ TIM_SR_UIF;
    pauza++;
    if(pauza>20)
    {
          GPIOC-> BSRR |=GPIO_BSRR_BS0;
    }
    if(pauza>40)
    {
         GPIOC-> BSRR |=GPIO_BSRR_BR0;
        pauza=0;
    }
   }
    //TIM2->SR &= ~ TIM_SR_UIF;
}
void EXTI_Init(void)
{

     // RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;
      GPIOA->MODER &=~ GPIO_MODER_MODER1_1;
      GPIOA->MODER &=~ GPIO_MODER_MODER1_0;
      GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1_1; //бит1
     GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR1_0;
       GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR1_1;
        GPIOA->PUPDR |= GPIO_PUPDR_PUPDR1_0;
        RCC->APB2ENR |=RCC_APB2ENR_SYSCFGEN ;
        SYSCFG->EXTICR[1] |= SYSCFG_EXTICR1_EXTI1_PA;
        EXTI->IMR|=EXTI_IMR_MR1;
        EXTI->RTSR|=EXTI_RTSR_TR1;
        EXTI->FTSR&=~EXTI_FTSR_TR1 ;
        NVIC_EnableIRQ (EXTI1_IRQn);
      //  SYSCFG->EXTICR[3] |= SYSCFG_EXTICR1_EXTI1_PB;
 //RCC->AHB1ENR |=
}

void adc_init(void)
{
 //RCC->AHB1ENR|=
        // RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;
         // GPIOA->MODER |= GPIO_MODER_MODER0;
          RCC->APB2ENR|=RCC_APB2ENR_ADC1EN;
          ADC1->CR2 |=ADC_CR2_CONT;//включить АЦП
               ADC1->CR2|=ADC_CR2_JEXTSEL;
                  ADC1->CR2 |=ADC_CR2_JEXTEN;

          ADC1->SMPR2 &=~ ADC_SMPR2_SMP1_0; //1
         ADC1->SMPR2&=~ADC_SMPR2_SMP1_1; //1
          ADC1->SMPR2 &=~ ADC_SMPR2_SMP1_2; //1

          ADC1->JSQR &=~ADC_JSQR_JSQ1;
           //  ADC1->SQR3   &=~ADC_SQR3_SQ1_0;   //1 IN1
          //      ADC1->SQR3   &= ~ ADC_SQR3_SQ1_1;     //0
          //      ADC1->SQR3   &= ~ADC_SQR3_SQ1_2;   //0
          //      ADC1->SQR3   &=~  ADC_SQR3_SQ1_3;     //0
          //      ADC1->SQR3   &= ~ADC_SQR3_SQ1_4;

}
void GPIO_init(void)
{
        RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;
              GPIOA->MODER |= GPIO_MODER_MODER0;
              GPIOA->MODER |= GPIO_MODER_MODER1;
           RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;

               // GPIOC->MODER &=~ GPIO_MODER_MODER13;
                   GPIOC->MODER &=~ GPIO_MODER_MODER13_1;
                   GPIOC->MODER |= GPIO_MODER_MODER13_0;
                   GPIOC ->OTYPER &=~GPIO_OTYPER_OT13;
                   //бит0 определяет скорость работы GPIO
                    GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_1; //бит1
                    GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR13_0;
                   GPIOC->PUPDR |=GPIO_PUPDR_PUPDR13_1;
                     GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR13_0;
                    GPIOC->MODER &=~ GPIO_MODER_MODER0_1;
                        GPIOC->MODER |= GPIO_MODER_MODER0_0;
                        GPIOC ->OTYPER &=~GPIO_OTYPER_OT0;
                                                 //бит0 определяет скорость работы GPIO
                     GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_1; //бит1
                    GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR0_0;
                    GPIOC->PUPDR |= GPIO_PUPDR_PUPDR0_1;
                    GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR0_0;
                    GPIOC->MODER &=~ GPIO_MODER_MODER0_1;
                   GPIOC->MODER &=~ GPIO_MODER_MODER0_1;
                                          GPIOC->MODER |= GPIO_MODER_MODER2_0;
                                          GPIOC ->OTYPER &=~GPIO_OTYPER_OT2;
                                                                   //бит0 определяет скорость работы GPIO
                                       GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR2_1; //бит1
                                      GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR2_0;
                                      GPIOC->PUPDR |= GPIO_PUPDR_PUPDR2_1;
                                      GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR2_0;
                                      GPIOC->MODER &=~ GPIO_MODER_MODER2_1;

}
void init_systimer(void)
{
  SysTick->LOAD|=1000 - 1;
  SysTick->VAL=0;
  //SysTick->CTRL|=CLKSOURCE;


}
void timer_3_init(void)
{


      RCC->APB1ENR |=RCC_APB1ENR_TIM3EN;
      //NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));

      //  TIM3->CNT=0;
       // TIM3->CR1=0;
      //TIM3->CR1&=~ TIM_CR1_CEN;
       TIM3->PSC=3500 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
           TIM3->ARR  = 100;


        TIM3->DIER = TIM_DIER_UIE;
        TIM3->EGR = TIM_EGR_UG ;


         TIM3->CR1|=   TIM_CR1_CEN;
         NVIC_EnableIRQ(TIM3_IRQn);
}

int main(void)
{
               GPIO_init();
               // EXTI_Init();
               timer_3_init();
              adc_init();
              ADC1->CR1|= ADC_CR1_JEOCIE;
                   ADC1->CR2 |=  ADC_CR2_ADON;
                     NVIC_EnableIRQ ( ADC_IRQn);
                     ADC1->CR2 |= ADC_CR2_JSWSTART;
    while(1)
    {
        //if(n==1)
    //    {
        // GPIOC-> BSRR |=GPIO_BSRR_BS13;
        //}
        //if(n==2)
        //{
        //          GPIOC-> BSRR |=GPIO_BSRR_BR13;
        //          n=0;
        //}
                           //      if(adc_data > 2024)
                          //   {

                           //        GPIOC->BSRR |= GPIO_BSRR_BS13;
                           //  }
                           //  else
                          //   {

                            //     GPIOC->BSRR |= GPIO_BSRR_BR13;
                            // }
    }
}
извените за назойливость.

Ссылка на комментарий
Поделиться на другие сайты

Вообщем что-то по ходу сдох мой чип STM32F407, который запаивал, половину проги написал все работало, а потом раз и что-то случилось с тактированием, и опять на Delay застряет в отладчике посмотрел. при этом на кварце никаких шевелений, менял и кварц, и внутреннее тактирование бред какой-то, все прозвонил и пропаял 5 раз ничего, чип  брал в РКС еще у него 7 ног были на половину отрезаны с магазина и даже жалобу оставлял, но без толку, решил на эту плату подкинуть F745, и тут вопрос по поводу тактирования, вот 745 максимум 216МГц, я в основном и юзаю на предельных частотах, так вот вопрос: к примеру в кубе кварц можно выбирать в пределах до 26МГц, с каким кварцем лучше  будет работать чип с 8МГц или с 20МГц, или с 24МГц, 25МГц? Или это не принципиально, к примеру у меня есть F769, там кварц на 25МГц стоит, при этом чип максимум 216МГц.

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

не плате стоит 8 но у меня нет настройки тактирования. я пишу в опциях    parths and symbol HSE_VALUE 25000000U.И у меня файле system c отключается внешнее тактирование.

хотя в хале  там всё автоматом но прерывания по инжектируемого ацп  оно также работает не так.

Ссылка на комментарий
Поделиться на другие сайты

16 часов назад, Электронщик сказал:

с каким кварцем лучше  будет работать чип с 8МГц или с 20МГц, или с 24МГц, 25МГц

для PLL никакой разницы. Главное чтобы в диапазон по ДШ входил и распаян правильно. Емкости компенсирующие я имею в виду. Для 8 и для 25 они будут разные. Про это в ДШ кстати тоже написано

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

29.12.2019 в 22:45, Электронщик сказал:

Получается камень поддельный? Или сам IAR? Вы в чем пишите в IAR? А есть кусок кода с тактированием? Чтобы помигать светиком проверить есть ли инверсия, и что с тактированием

Актуально ещё? Могу поэкспериментировать.

Ссылка на комментарий
Поделиться на другие сайты

Тактирование я не настраивал 

5 часов назад, Ivan Rusev сказал:

parths and symbol HSE_VALUE 25000000U

только прописываю в Atolic Truestudio.Инверсия есть только после нажатия RESET.B Halтоже самое.

Ссылка на комментарий
Поделиться на другие сайты

  • 3 недели спустя...

всем привет. появилась необходимость в проекте использовать usb virtual com port, чтобы не использовать внешний чип преобразователь решил юзать хардварный usb чипа stm32f407.
подскажите какую то библиотеку, реализующую данную функцию. (а то сам попытался освоить под это дело куб и хал - остался крайне недоволен, куча глюков всплывает при кубовой реализации).

Ссылка на комментарий
Поделиться на другие сайты

Всем привет!   Контора закупила EasyMx Pro v7 от Микроэлектроника. Может быть кто-то пользовался и подскажет: будет ли эта плата работать с StmCube mx и IAR  ?  Или надо пользоваться прогами от Микроэлектроники? (я так понимаю, что их МикроСи не очень популярен). Не хотелось бы тратить время на изучение того, что не пригодится.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Сообщения

    • @1960sae "Собирал когда то такой конструктор, запустился сразу....". блин. не могу управится с ним. все проверил. нашел пробитый конденсатор, поменял. питание от адаптера сделал 7,3в. регулятор четко 5,05 в держит. на ногах пика питание есть, на всех ногах тоже какая то напруга есть. ниче не греется, транзы холодные. но не работает и все. когда щупами проверял по выводам пика моргнули индикаторы один раз и все. осцилла нет. ума не приложу, интернет рою. пока нифига не смог победить. что смущает: по схеме (я выше здесь выложил) 8 резисторов (на индикаторы идут) по 220 ом, а в наборе они по 1 кОм (я их впаял). 
    • Кто сказал? Откуда такие знания? Опишите механизм появления искаженного звука. Точно не надо.
    • Здравствуйте. Чтобы не открывать новую тему по примитивному вопросу. На фото выше справа вверху стоит ионистор. На этой плате никаких элементов памяти я не вижу, поэтому скорее всего питание с ионистора подается вверх - на плату с МК.   Правильно ли я понимаю, что ионистор нужен для хранения текущего времени, а рабочая программа хранится в eeprom или flash на плате с МК (или в кишках самого МК)? Вопрос связан с тем, что прежде чем чинить эту LOGO, надо знать, сохранилась ли в нем программа. А чтобы узнать, сохранилась ли в нем программа, надо иметь соответствующую приблуду. Приблуду можно сотворить и самому, но если программа все-таки хранится в sram с питанием от ионистора, то никакого смысла делать приблуду нет, как и чинить LOGO. Просьба просветить, кто в курсе месте хранения рабочей программы в siemens logo. LOGO само собой старый: 6ED1052-1MD00-OBA5  
    • Против разумной, никаких. Кашкаровшина к ней не относится.
    • Так и делаю правильно, из за 50 гигов диск не попру никуда.
    • Доступ к файлам проекта, серверной части и график дизайнеру есть?
    • Эта платка напрямую к УСБ подключается, я через Arduino IDE заливал тот код, как в статье. Может правда панели плохие. Ножки не смог к плате припаять, припой вообще не ложился, поэтому проводочки только. Спасибо, а второй конденсатор обычный на 100 нанофарад? диод который уже у меня есть, его можно оставить? А код через арудино также заливать?
×
×
  • Создать...