Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 10:06:26

[youtube][/youtube]
Народ, только начал юзать STM32F051R8 на Discovery под Keil - pls кому не в лом, киньте пример инициализации TIM2 или TIM3 с прерыванием и как оформляется прерывание, ато после AVR тяжко втыкать.

http://www.st.com/en/development-tools/stm32cubemx.html
Внизу кнопка "гэт софтвар", но надо зарегаться - это не больно.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 10:16:42

Я бы не стал советовать начинать с куба. Уж лучше SPL.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 10:47:14

Я бы не стал советовать начинать с куба. Уж лучше SPL.

Да чего уж там - даешь самопальные функции-инициализаторы периферии через регистры!

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 11:01:19

Мурик писал(а):Я бы не стал советовать начинать с куба.
+
Ярослав555 писал(а):даешь самопальные функции-инициализаторы периферии через регистры!
Что же в этом плохого? Сплошные плюсы. Мне один уже заявил, узнав что я не использовал готовые библиотеки в неком проекте, что я от DMA отказался. А DMA совсем несложно настраивается, но вот для него нет, потому что есть автокоды и даже не пытался понимать что это видимо.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 11:25:35

Простые и подробные примеры использования периферии STM32F0xx есть в CodeSnippets.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 11:36:55

Ярослав555 писал(а):даешь самопальные функции-инициализаторы периферии через регистры!
Это потом, когда появится опыт работы с МК. А с начала лучше немного упростить задачу взяв SPL и заодно изучив как устроены ее функции.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 14:14:08

Мурик писал(а):А с начала лучше немного упростить задачу взяв SPL
Для меня как-то SPL никак ничего не упростил. Я имею ввиду для понимания и изучения МК.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 15:26:40

Для меня как-то SPL никак ничего не упростил. Я имею ввиду для понимания и изучения МК.

Проблема с stm32 и SPL состоит в том, что всю структуру периферии надо держать в голове - схему тактирования, взаимосвязи, распределение ножек и прочее. На настройку всего этого веселья уйдет вагон времени. Куб просто экономит время. Лично мне хватает секса с AD, 1-wire, синхронизацией всяких вычиток и прочей лабудой.

Re: STM32 новичку в ARM что к чему

Пт апр 20, 2018 18:13:24

Дак пользуйтесь любыми средствами программирования, которые Вам нравятся, кто ж против то? Я про то, что автокоды и готовые библиотеки скорее мешают изучению МК, чем помогают, как магнитофон при обучении игре на рояле.

Re: STM32 новичку в ARM что к чему

Сб апр 21, 2018 01:45:05

В смысле читаете счетчик? Данные захватываются в специальный регистр, оттуда и читайте, это будет максимально точное значение.


Плохо выразился. Конечно читаю CCR1.

Посмотрел на PWM input mode. Попробую один канал пустить на capture, другой на slave mode reset. Спад импульса мне не нужен, только фронт, но наверное получится. Спасибо за наводку.

Re: STM32 новичку в ARM что к чему

Пн апр 23, 2018 10:02:56

Народ, подскажите, какая последняя нормальная версия Keil для ARM и откуда лучше скачать вместе с таблеткой.

Добавлено after 46 minutes 17 seconds:
Народ, ещё подскажите - Keil пишет - ошибка записи в флеш, что может быть?
Error 1.jpg
(18.79 KiB) Скачиваний: 385

Добавлено after 24 minutes 9 seconds:
Ошибку записи в флеш пофиксил, кому будет нужно - https://electronix.ru/forum/lofiversion ... 86983.html

Re: STM32 новичку в ARM что к чему

Вт апр 24, 2018 08:35:06

Благодарю всех откликнувшихся, но решил сделать старым дедовским методом - по даташиту - 1 раз разобраться, чтобы потом не искать ошибки в HAL/SPL/Cube, но не исключаю что попробую и HAL/SPL/Cube.

Re: STM32 новичку в ARM что к чему

Пт апр 27, 2018 15:21:36

Добрый день, не посещает удача при запуске АЦП от таймера stm32f303. Подскажите пожалуйста в каком моменте заблуждаюсь.

Код:
void ADC_Timer_Init(void)
{      
  RCC->APB2ENR |= RCC_APB2ENR_TIM15EN;

  TIM15->PSC  = 720 -1; //new clock = 100kHz
  TIM15->ARR  = 50 - 1; //period = 0.0005sec
  TIM15->CR2 |= TIM_CR2_MMS_1; //COUNTER_ENABLE signal to TIM15, used as trigger output (TRGO)
}

void ADC_Init(void)
{
      RCC->AHBENR |= RCC_AHBENR_GPIODEN ;//разрешаем тактирование порта D
   GPIOD->MODER |= GPIO_MODER_MODER11;//настраиваем PD11(8chanel) для работы АЦП в режим аналогового входа
   GPIOD->PUPDR &= ~GPIO_PUPDR_PUPDR11;
   
   RCC->CFGR2 |= RCC_CFGR2_ADCPRE34_DIV1;//предделитель 1 для АЦП
   ADC3_4_COMMON->CCR &= ~(ADC34_CCR_CKMODE);//тактируем от PLL
   RCC->AHBENR |= RCC_AHBENR_ADC34EN;//включаем тактирование АЦП
   
   
   ADC3->CR &= ~ADC_CR_ADVREGEN;
   ADC3->CR |=  ADC_CR_ADVREGEN_0;
   delay_us(100);
   
   ADC3->CR &= ~ADC_CR_ADCALDIF;
   ADC3->CR |= ADC_CR_ADCAL;//Запуск калибровки АЦП
   while (ADC3->CR & ADC_CR_ADCAL);//Ожидание конца колибровки

   ADC3->SMPR1 &= ~ADC_SMPR1_SMP8;
   ADC3->SMPR1 |= ADC_SMPR1_SMP8_0;
   ADC3->SMPR1 |= ADC_SMPR1_SMP8_2;

   
   ADC3->CFGR   &= ~ADC_CFGR_ALIGN;//выравниваем результат преобразования по правому краю
   ADC3->CFGR   &= ~ADC_CFGR_RES;   //12bit
   ADC3->CFGR     &=  ~ADC_CFGR_CONT; //одиночное преобразование
   ADC3->CFGR     |=  ADC_CFGR_OVRMOD;
   
        ADC3->CFGR |=  ADC_CFGR_EXTSEL;   // запуск преобразования по TIM15_TRGO event
   ADC3->CFGR &= ~ADC_CFGR_EXTSEL_0;
   ADC3->CFGR &= ~ADC_CFGR_EXTEN;// включаем софтовый запуск                  

   //длина последовательности по умолчанию равна 1,
   ADC3->SQR1 = ADC_SQR1_SQ1_3;                           //(PD11 - 8 канал)
   
   ADC3->CR  |=  ADC_CR_ADEN;//включаем АЦП
   while(ADC3->ISR & ADC_ISR_ADRD);//ждём его готовности
   delay_us(100);

}



Таймер тикает, но преобразование не запускает.
Включаю его в другом месте.

Re: STM32 новичку в ARM что к чему

Сб апр 28, 2018 08:34:07

Народ, разбираюсь с SPI STM32F051, передачу и приём запустил, не разобрался с формированием Chip Select, сделано сильно заморочено в сравнении с АВР8 - поясните, как его формировать и переключать.
Код:
  RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;        // Enable Clock SPI1

  SPI1->CR1  = SPI_CR1_MSTR |  // Master configuration
               SPI_CR1_BR   |  // Baud rate control = 111 : fPCLK/256
               SPI_CR1_SSI  |  // SSI: Internal slave select
               SPI_CR1_SSM;    // SSM: Software slave management enabled

  SPI1->CR2  = SPI_CR2_DS_0   |
                SPI_CR2_DS_1   |
       SPI_CR2_DS_2; //  | // Data Size 8 bit
//              SPI_CR2_TXEIE;   // Tx buffer empty interrupt enable
//              SPI_CR2_RXNEIE;  // Rx buffer empty interrupt enable
//           SPI_CR2_SSOE;    // SS Output Enable
                     
  SPI1->CR1 |= SPI_CR1_SPE;     // Enable SPI1

Пробовал подключать 8 разрядный 7-сегментник на MAX7219 и TFT 1,8" на ST7735, не получилось, сделал через софтовый SPI.

Re: STM32 новичку в ARM что к чему

Сб апр 28, 2018 08:56:30

Народ, разбираюсь с SPI STM32F051, передачу и приём запустил, не разобрался с формированием Chip Select

Смотри бит NSSP в CR2.

Re: STM32 новичку в ARM что к чему

Сб апр 28, 2018 09:31:54

Народ, разбираюсь с SPI STM32F051, передачу и приём запустил, не разобрался с формированием Chip Select

Смотри бит NSSP в CR2.

Т.е. выставить NSSP=1 и SSOE=1 в CR2, и контроллер автоматом будет дёргать Chip Select?

А SSI и SSM в CR1 не трогать? Пока не вкурил что это за биты.

Re: STM32 новичку в ARM что к чему

Вс апр 29, 2018 14:20:04

2 Reflector спасибо, запустил аппаратный SPI на STM32F051, TFT 1.8" 160х128 на ST7735 просто летает

Re: STM32 новичку в ARM что к чему

Вт май 01, 2018 19:45:36

Народ, пытаюсь прочитать RAM STM32F051 - адрес 0x20000000 читается, дальше пытаюсь прочитать несколько последующих байтов - идёт прерывание вызова функции чтения? Что может быть?
Код:
uint32_t memory_read (uint32_t address)
{return (*(__IO uint32_t*) address);}

Код:
uint32_t Adress_RAM = 0x20000000;

Код:
Data_RAM = memory_read (Adress_RAM);

Re: STM32 новичку в ARM что к чему

Вт май 01, 2018 19:49:09

Народ, пытаюсь прочитать RAM STM32F051 - адрес 0x20000000 читается, дальше пытаюсь прочитать несколько последующих байтов - идёт прерывание вызова функции чтения? Что может быть?

M0, в отличие от M3 и выше, не поддерживает невыровненный доступ, т.е. байт может лежать где угодно, но если идет обращение к 16-ти или 32-х битным переменным, то они должны быть выровнены по границам 2 или 4-х байт.

Re: STM32 новичку в ARM что к чему

Вт май 01, 2018 20:13:48

Народ, пытаюсь прочитать RAM STM32F051 - адрес 0x20000000 читается, дальше пытаюсь прочитать несколько последующих байтов - идёт прерывание вызова функции чтения? Что может быть?

M0, в отличие от M3 и выше, не поддерживает невыровненный доступ, т.е. байт может лежать где угодно, но если идет обращение к 16-ти или 32-х битным переменным, то они должны быть выровнены по границам 2 или 4-х байт.

Благодарю, вкурил - я как раз пытался прочитать 4 первых байта по очереди в 32-битную переменную - как раз 0x20000000 читается, 3 последующих глючат, 0x20000004 и 0x20000008 значит должны прочитаться.
Ответить