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

STM32 для чайника


ART_ME

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

Можно ли тут (или где лучше?) спросить совета по коду для STM32?

На ESP немного писал под VS Code + Platformio.

Сейчас вот взял на пробу STM32F103C8T6  на платке Maple mini (сдуру, не знал, что уже не поддерживается, впрочем, сейчас это не важно).

Так вот, PlatformIO позволяет под STM32 использовать разные фреймворки. В  "Arduino" мигание светодиодом сразу получилось.   

pinMode(PB1, OUTPUT); и т.п. Причем в IDE видно, что PB1 "Expands to 33" (светодиод на плате по документации на D33, что соответствует B1).

А вот в фреймворке STM32Cube мигать не получается. Прописал так:

#define LED_PIN                                GPIO_PIN_1
#define LED_GPIO_PORT                          GPIOB
#define LED_GPIO_CLK_ENABLE()                  __HAL_RCC_GPIOB_CLK_ENABLE()
  
  int main(void)
{
  HAL_Init();
  
  LED_GPIO_CLK_ENABLE();
  
  GPIO_InitTypeDef GPIO_InitStruct;
  
  GPIO_InitStruct.Pin = LED_PIN;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); 

  while (1)
  {
    HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);   
    HAL_Delay(1000);
  }
}

// ниже всякие SysTick_Handler просто взятые из примера...

 Т.е. честно заменил Pin на 1, GPIOA заменил на GPIOB,  для CLK_ENABLE тоже поменял. А не мигает.

Есть ли идеи, что не так?

Меня, конечно, Arduino-style устраивает. Под ESP я тоже под него пишу, благо библиотек полно. Но вроде как зачем тогда STM32, если ресурсы на Ардуино тратить?

Просто для сравнения firmware.bin  для Arduino - 13656 байт, а для STM32Cube всего 1492. Но первый работает, а второй нет :) 

 

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

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

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

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

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

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

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

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

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

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

Нужна помощь.Есть stm32F103b и есть stm32f407ve.Я хочу программу написать на cmsis.Таймера запустить в прерывании.На  stm32F103b все получается как нужно.А вот на stm32f407ve не получается.В режиме internal clock.И вроде регистры те же.

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

Ivan Rusev изучать референс мануал нужно и понимать работу таймеров.

Darth_Vader HAL советовать нда...

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

чтоб   изучать референс мануал  и понимать работу таймеров.Мне хотя бы это на русском языке и тогда я в двух  можно найти разницу.HAL LL.можно но с регистрами лучще.

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

в мануале всё одинаково регистры те же где же собака зарыта может кто нибудь подсказать или показать? Человек мне переводил.Да и я в нете переводил.?

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

Или хотя бы таймеры написал какие юзаешь, там некоторые таймеры нуждаются в доп команде допустим для шима

 А вообще @MasterElectric прав, без кода сложно) Например там могут названия хендлеров прерываний быть разные

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

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


#include"main.h"

volatile unsigned int pauza=0;
volatile unsigned char flag=0;
volatile unsigned char n=0;

void EXTI1_IRQHandler(void)
{
    EXTI->PR |=EXTI_PR_PR1;
    n++;
}
void TIM3_IRQHandler (void)
{
  if(TIM3->SR & TIM_SR_UIF)
  {
    TIM3->SR &= ~ TIM_SR_UIF;
    pauza++;
    if(pauza>1)
    {
          GPIOC-> BSRR |=GPIO_BSRR_BS13;
    }
    if(pauza>20)
    {
       GPIOC-> BSRR |=GPIO_BSRR_BR13;
        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 GPIO_init(void)
{
           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;
}
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|= 10;


      //  TIM3->DIER |= TIM_DIER_UIE;
      //  TIM3->EGR |= TIM_EGR_UG ;
    //    NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));

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

}

int main(void)
{
               GPIO_init();
               // EXTI_Init();
               timer_3_init();


    while(1)
    {
        //if(n==1)
    //    {
        // GPIOC-> BSRR |=GPIO_BSRR_BS13;
        //}
        //if(n==2)
        //{
        //          GPIOC-> BSRR |=GPIO_BSRR_BR13;
        //          n=0;
        //}

    }
}
вот мой исходник прошу консультации.

режим internal clock в  stm32F103b  получается запустить таймер в прерывании а в stm32f407ve. ничего не выходит.И ещё один вопрос каждый стм индивидуально по камням настраивается переферия?И по cmsis не много примеров и инфы.Референс мануал на русском.Хотя я делал перевод сходится на 99% регистры те же может таймера немного другие.

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

TIM3->DIER |= TIM_DIER_UIE; я хочу работать в  прерывании

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


#include "main.h"
//#define TIM_EnableIT_UPDATE(TIMx) SET_BIT(TIMx->DIER, TIM_DIER_UIE)
//#define TIM_EnableCounter(TIMx) SET_BIT(TIMx->CR1, TIM_CR1_CEN)
//#define TIM_DisableCounter(TIMx) CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN)
//#define  NVIC_EnableIRQ ( TIM2_IRQn  )
 volatile unsigned char flag=0;
 volatile unsigned char program=0;
 volatile unsigned char adc_data=0;
 volatile unsigned int pauza1=0;
 volatile unsigned int pauza2=0;
 void pauza (int T)//ввод самой паузы(программы) она написана отдельно и введеннием #include "paua.h"можно писать в основном цыкле pauza()с вводом целой переменной T
 {
    int i=0;//введение целойперемменой i
    char t=0;// введение вещественной переменной t считает такты микроконтролера
    for(i=0;i<T;t++) //програмама в цыкле
   {
     if(t==255)i=i+1;// условия одного цыкла счёта пределитель i определяется регистром TCCR2 определяется 0.1.2 битами это делителем частоты работы таймера
   }
 }
 void TIM1_IRQHandler(void)
 {
    // TIM1->DIER&=~TIM_DIER_UIE;
     TIM1->SR &= ~ TIM_SR_UIF;
     pauza1++;
     // if(pauza1>10)
           // {
                //  GPIOC-> BSRR |=GPIO_BSRR_BS13;
           //  }
          //   if(pauza1>20)
           //   {
                //  GPIOC-> BSRR |=GPIO_BSRR_BR13;
            //      pauza2=0;
              // }

     //  GPIOC->ODR ^= GPIO_ODR_OD1;
 }
void TIM3_IRQHandler(void)
{
    //TIM2->DIER&=~TIM_DIER_UIE;
    if(TIM3->SR& TIM_SR_UIF)
    {
     TIM3->SR &= ~ TIM_SR_UIF;
      pauza2++;
    //if(!(GPIOC->IDR& GPIO_IDR_ID0))
    //{
    //    pauza(20);
         if(pauza2>10)
         {
              GPIOC-> BSRR |=GPIO_BSRR_BS13;
         }
         if(pauza2>20)
          {
              GPIOC-> BSRR |=GPIO_BSRR_BR13;
              pauza2=0;
           }
    }
 }

void PROGRAM(void)
{
    //GPIOC-> BSRR |=GPIO_BSRR_BS1;
        //        pauza(2000);
        //       GPIOC-> BSRR |=GPIO_BSRR_BR1;
        //         pauza(2000);
}
void inits_timer1(void)
{
    RCC->APB2ENR |=RCC_APB2ENR_TIM1EN;
    NVIC_EnableIRQ (TIM1_UP_TIM10_IRQn   );
        TIM1->PSC = 2000-1;//24000 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
              TIM1->ARR = 10 ;
              TIM1->DIER |= TIM_DIER_UIE;//устанавливаем флаг 1по таймеру
              TIM1->CR1|= TIM_CR1_CEN;//разрешаем работу таймера

}
void inits_timer2(void)
{
    RCC->APB1ENR |=RCC_APB1ENR_TIM2EN;

    TIM2->PSC = 2400 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду

          TIM2->ARR = 10 ;
          TIM2->CR1&=~TIM_CR1_ARPE;
          TIM2->SMCR|=TIM_SMCR_SMS|TIM_SMCR_ECE;;
          TIM2->SMCR&=~TIM_SMCR_MSM;
          TIM2->EGR&=~TIM_EGR_UG;
          TIM2->DIER |= TIM_DIER_UIE;//устанавливаем флаг 1по таймеру
          NVIC_EnableIRQ ( TIM2_IRQn  );
          TIM2->CR1|=   TIM_CR1_CEN;//разрешаем работу таймера

}
void inits_timer3(void)
{
    //TIM3->CR1&=~  TIM_CR1_CEN;
      RCC->APB1RSTR|=RCC_APB1RSTR_TIM3RST;
     RCC->APB1RSTR&=~RCC_APB1RSTR_TIM3RST;

    //TIM3->CNT|= 0x00000000;

    TIM3->PSC|= (uint16_t)0x0000;
     TIM3->CR1&=~TIM_CR1_DIR;
    TIM3->ARR|= 0xFFFFFFFFU;
    TIM3->CR1&=~TIM_CR1_CKD;
    //TIM3->RCR|=0x0000;

      RCC->APB1ENR |=RCC_APB1ENR_TIM3EN;

      NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
        NVIC_EnableIRQ(TIM3_IRQn);
 //TIM3->CR1&=~  TIM_CR1_CEN;


        TIM3->PSC|=3500 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
        TIM3->CR1&=~TIM_CR1_DIR;
        TIM3->ARR|= 10;
           TIM3->CR1&=~TIM_CR1_CKD;
        TIM3->CR1&=~TIM_CR1_ARPE;
        TIM3->SMCR|=TIM_SMCR_SMS|TIM_SMCR_ECE;
        TIM3->CR2|=TIM_CR2_MMS;
        TIM2->SMCR&=~TIM_SMCR_MSM;
        TIM3->DIER |= TIM_DIER_UIE;


       // NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
        //  NVIC_EnableIRQ(TIM3_IRQn);
         TIM3->CR1|=   TIM_CR1_CEN;

}

void inits_adc1(void)
{
    RCC->AHB2ENR |= RCC_APB2ENR_ADC1EN;
    ADC1->CR2 &= ~ ADC_CR2_EXTEN;//external trigger disconnection
      ADC1->SQR3  &= ~ ADC_SQR3_SQ1;//enable channel 0 first conversion //  right edge
      ADC1->CR2 |= ADC_CR2_CONT;// continuous conversion
      ADC1->CR2 |= ADC_CR2_ADON;//
}
//void adc_program(void)
//{
//     ADC1->CR2 |= ADC_CR2_SWSTART;
    //         while (!(ADC1->SR & ADC_SR_EOC)); //ждем пока первое преобразование завершится
    //                 ADC1->SR &=~ ADC_SR_EOC;
    //                  adc_data = ADC1->DR;
    //                  //ADC1->SR = 0;
    //                  if(adc_data > 2024)
        //              {
                        //  GPIOC->ODR|=1<<13;
                         // GPIOE->BSRR |= GPIO_BSRR_BS1;
             //         }
            //          else
               //       {
                        //  GPIOC->ODR&=~1<<13;
                        // GPIOE->BSRR |= GPIO_BSRR_BR1;
             //        }
//}

void inits_adc2(void)
{

}
 void inits_GPIOC(void)
 {
     RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;


           GPIOC->MODER &=~ GPIO_MODER_MODER13_1;
           GPIOC->MODER |= GPIO_MODER_MODER13_0;
           GPIOE ->OTYPER &=~GPIO_OTYPER_OT1;
           //бит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;
            /*     настройка на вход     */

          // RCC->AHB1ENR|=RCC_AHB1ENR_GPIOCEN;

           GPIOC->MODER &=~ GPIO_MODER_MODER0_1;
                     GPIOC->MODER &=~ GPIO_MODER_MODER0_0;
                     GPIOC ->OTYPER &=~GPIO_OTYPER_OT0;
                     //бит0 определяет скорость работы GPIO
                      GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR1_1; //бит1
                      GPIOC->OSPEEDR &=~ GPIO_OSPEEDER_OSPEEDR1_0;
                      GPIOC->PUPDR &=~ GPIO_PUPDR_PUPDR1_1;
                      GPIOC->PUPDR |= GPIO_PUPDR_PUPDR1_0;

 }
 void inits_GPIOA(void)
 {
     RCC->AHB1ENR|=RCC_AHB1ENR_GPIOAEN;
                 GPIOA->MODER |= GPIO_MODER_MODER0_1;
               GPIOA->MODER |= GPIO_MODER_MODER0_0;
               GPIOA->PUPDR &=~GPIO_PUPDR_PUPDR0_1;
               GPIOA->PUPDR &=~ GPIO_PUPDR_PUPDR0_0;

 }

int main(void)
{
    inits_GPIOC();
    //inits_adc1();
    //inits_timer1();
    inits_timer3();

//     NVIC_EnableIRQ ( TIM2_IRQn  );
    while(1)
    {
        //ADC1->CR2 |= ADC_CR2_SWSTART; //Запуск преобразований
        //while (!(ADC1->SR & ADC_SR_EOC)); //ждем пока первое преобразование завершится
        //ADC1->SR = 0;
        //res = ADC1->DR;
         // GPIOC->ODR ^= GPIO_ODR_OD1;
        //GPIOC-> BSRR |=GPIO_BSRR_BS13;
            //      pauza(2000);
    }
}
вот код в регистрах скопрованно  с куба без организации системы тактирования.Он не работает.Таймер 3 работает в прерывании где ошибка ?

в кортекс м3 работает без наворотов проще а в кортекс м4 и выше не работает ни таймер ни ацп наверное ничего кроме портов и прерывание по порту.Я проверял.В чём причина?

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

@Ivan Rusev TIM3->SMCR трогать не надо. Это что TIM2->SMCR&=~TIM_SMCR_MSM; 

тут

    TIM3->PSC|= (uint16_t)0x0000;
     TIM3->CR1&=~TIM_CR1_DIR;
    TIM3->ARR|= 0xFFFFFFFFU;
    TIM3->CR1&=~TIM_CR1_CKD;
    //TIM3->RCR|=0x0000;

      RCC->APB1ENR |=RCC_APB1ENR_TIM3EN;

обращаешься и толку если он отключен. От ARR тоже нужно отнимать 1. Делители посчитаны неправильно.

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

void inits_timer3(void)
{
    
     


      RCC->APB1ENR |=RCC_APB1ENR_TIM3EN;

        TIM3->PSC|=3500 - 1; // Настраиваем делитель что таймер тикал 1000 раз в секунду
        
        TIM3->ARR|= 100-1;
    
        TIM3->DIER |= TIM_DIER_UIE;


        NVIC_SetPriority(TIM3_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
          NVIC_EnableIRQ(TIM3_IRQn);
         TIM3->CR1|=   TIM_CR1_CEN;

}

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

19.12.2019 в 07:07, Ivan Rusev сказал:

а в кортекс м4 и выше не работает ни таймер ни ацп наверное ничего кроме портов и прерывание по порту.Я проверял.В чём причина?

А что ты проверял? Что в твоем понимании значит "не работает"? Ты думаешь тут экстрасенсы есть, читать визуальные образы в твоей памяти?

Потом, нафига, вставлять код, половина которого закоментирована? - это же просто какое-то не уважение к аудитории - типа, "нате, попробуйте -разберитесь, вот сколько букв мне приходится запоминать!",

Зачем ты берешься делать то что тебя раздражает? При таком отношении, не мудренно, что что то не работает.

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

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

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

29 минут назад, MasterElectric сказал:

Я могу только посоветовать начать с изучения языка си. 

Зачем, если он  написал программу на stm32F103b, и она у него, по его словам, работает как нужно.

Проблема возникла при переносе кода на stm32f407ve.

---------------------------------------------------------------------

@Ivan Rusev , ИМХО Вам поможет только тот, кто имеет личный успешный опыт переноса кода с stm32F103b на stm32f407ve.

Насколько я понял по обсуждению, на этом форуме таковых нет. Что вовсе не является странным или необычным. Потому как может запросто оказаться, что таковых в РФ вообще не существует.

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

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

 

 

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

@ART_ME Учить язык си, чтобы не было такой херни в коде:

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

Рассмешили про перенос кода, да это было смешно)))

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

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

Насколько я понял по обсуждению, на этом форуме таковых нет.

возможно будет)) я как раз набросал тестовый осцил на 103, а пару дней назад получил 407vet, вот теперь память дождаться и буду разводить платку и переносить)) вот ка краз проверю работу таймеров ибо они мне нужны) а пока мк лежит не впаянный сложно проверить)) правда скоро НГ и я думаю посылка с памятью уже не в этом году приедет... Али вообще накосячили со своими упаковками разных посылок в одну, раньше я получал посылки с платной доставкой за 12-15 дней, теперь полтора месяца, ибо они месяц лежат на складе али и они собирают кучу посылок в одну и одной отсылают, теперь бесплатную похоже быстрей дождаться)))

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

21 минуту назад, DrobyshevAlex сказал:

возможно будет)) я как раз набросал тестовый осцил на 103, а пару дней назад получил 407vet, 

Вот и корифантесь с ТС.  :drinks:

Тем более, что раз уж обнаружилось таких двое, то их явно будет больше, и Ваш с ТС личный опыт будет им весьма полезен. 

По крайней мере вы с ним будете пинать посетителей форума за "херню в коде". ;)

Ибо спасение утопающих - дело рук самих утопающих.  :rolleyes:

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

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

 

 

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

мне пока нечего сказать про 407. я кодил только под 030 и 103 :) самом вот жду когда ж все детали придут или не придут, чтоб знать какую платку сделать, уже было так, вот даже камень, я заказал один а пришел другой)) так что и паять и ацп могут быть не те :D вообщем пока нечего сказать...

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

Скажу сразу таймера так вы просто не запустите.Через куб да.контроллер по проще  AVR  5 лет.Stm32 только в этом году врубаюсь.Программу можно писать  на СИ и для Stm 32.На сколько  я знаю си не могу судить.Дело не в си.А наверное дело в подходе.Постояльцы не программа неработающая меня раздражает.А ваше не желание дать инфу.С собой всё не возмёшь.Последний код верен..А вас раздражаю я задавая эти вопросы.И я вижу что вы не очень хотите дать инфу.Дурак-остановка на чистотюрском-дурмак.Регистры те же по таймерам.Да с Ацп та же история.Там правда регистры немного другие.По крайнее мере я в прерывании на 103 запустил в cmsis.

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

1 час назад, Ivan Rusev сказал:

Скажу сразу таймера так вы просто не запустите.Через куб да.контроллер по проще  AVR  5 лет.Stm32 только в этом году врубаюсь.Программу можно писать  на СИ и для Stm 32.На сколько  я знаю си не могу судить.Дело не в си.А наверное дело в подходе.Постояльцы не программа неработающая меня раздражает.А ваше не желание дать инфу.С собой всё не возмёшь.Последний код верен..А вас раздражаю я задавая эти вопросы.И я вижу что вы не очень хотите дать инфу.Дурак-остановка на чистотюрском-дурмак.Регистры те же по таймерам.Да с Ацп та же история.Там правда регистры немного другие.По крайнее мере я в прерывании на 103 запустил в cmsis.

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

а еще за долгие годы программирования я понял что чудес не бывает. и если по ДШ таймер есть - то они есть)) а вообще очень сложно прочесть что вы пишите...

 

 

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...