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

Re: Stm32 с чего начать изучение...

Вт фев 14, 2012 14:43:35

IfoR писал(а)::facepalm:
Да что же вы сразу меня в эту надпись не тыкнули? Я то думал оно АЦП питает. Не заметил я этого.
Теперь всё заработало. Спасибо! :)

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

Re: Stm32 с чего начать изучение...

Сб фев 18, 2012 16:09:54

http://www.youtube.com/watch?v=5Y_5xxmk ... re=channel - на русском обзор документации по stm32

Re: Stm32 с чего начать изучение...

Пт фев 24, 2012 09:41:01

Ну вот начал изучать stm32 + MMC + FatFs. В принципе все заработало. В примерах подключения карты часто используется программный SPI. При работе на частоте 24 МГц получается скорость SPI около 1 Мбита. Захотелось перевести на аппаратный SPI2, но при этом карта инициализируется на скорости до 125 кбит. Быстрее-вылазит ошибка. Вот кусочек инициализации и чтения /записи.
Код:
 RCC->APB1ENR |= RCC_APB1ENR_SPI2EN; //подать тактирование                                      /
           SPI2->CR1     = 0x0000;             //очистить первый управляющий регистр
           SPI2->CR2     = 0x0000;             //очистить второй управляющий регистр
           SPI2->CR1    |= SPI_CR1_MSTR;       //контроллер должен быть мастером   
           SPI2->CR1    |=  0x30;         //задаем скорость 30=8*4мкс
           SPI2->CR1    |= SPI_CR1_SPE;        //разрешить работу модуля SPI


Код:
void xmit_spi(unsigned char data)    
  {/*
    unsigned char i;
   for (i=0;i<8;i++) //Цикл перебора битов отправляемого байта
    {
     if ((data&0x80)==0x00)//Если все данные переданы
     {
     GPIOB->ODR &=~0x0001; //Выставить бит данных
     }
     else GPIOB->ODR|=0x0001;
     data=data<<1;
     GPIOB->ODR|=0x0004; //Импульс
     GPIOB->ODR&=~0x0004;
    }
  */
     while (SPI2->SR & SPI_SR_BSY);
     while (!(SPI2->SR & SPI_SR_TXE));    
     SPI2->DR = data;             // Передача данных
  }


Код:
static
BYTE rcvr_spi (void)
{ /*
  //Декларация переменных
  unsigned char i, res=0;
  for(i=0;i<8;i++)
   {
   GPIOB->ODR|=0x0004; //Фронт импульса
   res=res<<1;
   if ((GPIOB->IDR&0x0002)!=0x00) res=res|0x01; //Считать бит данных
   GPIOB->ODR&=~0x0004; //Спад испульса
   }
  */
     while (SPI2->SR & SPI_SR_BSY);
     SPI2->DR = 0xff;
     while (!(SPI2->SR & SPI_SR_RXNE));
     res = SPI2->SR;
     res = SPI2->DR;   
  return res ;
}


закомментирован программный SPI. Подскажите где может быть ошибка?

Re: Stm32 с чего начать изучение...

Пт фев 24, 2012 10:29:54

А чем STM32 Peripheral library не угодил ?

Re: Stm32 с чего начать изучение...

Ср фев 29, 2012 01:15:10

Господа, а кто-нибудь использовал FreeRTOS в своих проектах?
Если таковые люди имеются, я попросил бы, если не сложно, разъяснить мне один момент по поводу приоритетов задач. У Курница я вычитал следующую вещь:
Код:
Среди всех задач, находящихся в состоянии готовности, планировщик отдаст управление той задаче, которая имеет наивысший приори­тет. Задача будет выполняться до rex пор, пока она не будет блокирована или приостановлена или пока не появится готовая к выполнению задача с более высоким приоритетом.

Таким образом, не значит ли это, что если я имею две задачи (скажем, светодиодные те же мигалки - пусть будут синяя и красная) с одинаковым приоритетом (пусть tskIDLE_PRIORITY=0), и вдруг установлю приоритет первой задачи равным (tskIDLE_PRIORITY+1), то выполняться будет только лишь эта самая первая задача - вплоть до принудительной приостановки или понижения приоритета? А вторая задача что - уйдет в суспенд?
Непонятен мне этот нюанс. Если так, то с приоритетами вообще становится опасно баловаться..

Re: Stm32 с чего начать изучение...

Ср фев 29, 2012 09:55:22

Это уж как ты задачу с высшим приоритетом организуешь
"пока она не будет блокирована или приостановлена"

Приостанволена - это ж не значит, что снаружи. Если ты вызвал внутри Sleep(), ожидание события или разблокировки мутекса - это и есть блокировка, по которой шедулер начинает выполнять менее приоритетные задачи до наступления события, ведущего к разблокировке

Re: Stm32 с чего начать изучение...

Ср фев 29, 2012 10:28:21

Спасибо, с блокировкой понятно.
А насчет организации задачи - имеется в виду, будет ли задача ожидать наступления какого-либо события (иное условие для блокировки), чтобы планировщик мог выделить процессорное время другим задачам? Скажем, если задача будет постоянно в состоянии готовности (те же шморгалки ведь не требуют наступления особых условий), и ее приоритет будет выше приоритетов других задач, то планировщик будет выделять время только ей?
Я просто запутался с приоритетами - считал, что задача с высшим по отношению к другим приоритетом будет выполняться первой (какой-то квант времени), а потом планировщик переключится на другую задачу..

Re: Stm32 с чего начать изучение...

Ср фев 29, 2012 10:32:00

SubDia писал(а):Я просто запутался с приоритетами - считал, что задача с высшим по отношению к другим приоритетом будет выполняться первой (какой-то квант времени), а потом планировщик переключится на другую задачу..

Будет время - конечно переключится -)))

Если будешь вместо Sleep пользовать конструкции типа for(volatile int i=0; i < 1000000; ++i) ; то проблемы будут -)))

Да и в FreeRTOS, насколько помню, есть разные настройки и режимы. Вплоть до выбора вытесняющая/добровольная многозадачность.

Re: Stm32 с чего начать изучение...

Ср фев 29, 2012 10:38:43

Satyr писал(а):Если будешь вместо Sleep пользовать конструкции типа for(volatile int i=0; i < 1000000; ++i) ; то проблемы будут -)))

Уже были. :)))
Благодарю за ответ. Я пока только начал изучать эту ОС.

Re: Stm32 с чего начать изучение...

Пн мар 05, 2012 15:39:04

Satyr писал(а):Да и в FreeRTOS, насколько помню, есть разные настройки и режимы. Вплоть до выбора вытесняющая/добровольная многозадачность.

Все верно, добрел наконец-то до этого. У меня в конфиге политика планирования - преимущественная (configUSE_PREEMPTION=1), то есть всегда (постоянно) выполняется задача с наивысшим приоритетом, задачи с одинаковым приоритетом делят процессорное время.
На практике давно дошло, вот нашел и теоретическое подтверждение. =)

Re: Stm32 с чего начать изучение...

Ср мар 07, 2012 20:37:25

А у меня такой вопрос немного не в тему:
У STM32 есть регистры для атомарного управления битами в порту: BSRR и BRR. Первый может как устанавливать, так и сбрасывать биты, а второй только сбрасывать. Зачем тогда нужен BRR?

Re: Stm32 с чего начать изучение...

Ср мар 07, 2012 20:57:14

Sergi писал(а):Захотелось перевести на аппаратный SPI2, но при этом карта инициализируется на скорости до 125 кбит. Быстрее-вылазит ошибка.

Это так и должно быть, по спецификации SD-карт. Инициализация - на скорости 100..400КГц, потом можно переключать на бОльшую скорость (20МГц вроде).

Re: Stm32 с чего начать изучение...

Ср мар 07, 2012 21:01:01

IfoR писал(а):У STM32 есть регистры для атомарного управления битами в порту: BSRR и BRR. Первый может как устанавливать, так и сбрасывать биты, а второй только сбрасывать. Зачем тогда нужен BRR?

У них маска одного бита на одном и том же месте. То есть, сбросить бит номер N - BRR = 1<<N, установить - BSRR = 1<<N. Иногда это может быть удобно, не надо двигать маску туда-сюда.

Re: Stm32 с чего начать изучение...

Ср мар 07, 2012 21:04:27

А-а, понятно. Спасибо!

Re: Stm32 с чего начать изучение...

Вт авг 09, 2016 14:10:11

скачал описание на STM32F042xx.

почему тут нету не описания регистров и т.д. как на атмелы ?

http://www.farnell.com/datasheets/1886881.pdf

Re: Stm32 с чего начать изучение...

Вт авг 09, 2016 14:55:03

Регистры в Reference Manual, а не в даташите.

Re: Stm32 с чего начать изучение...

Вт авг 09, 2016 15:20:55

ага - щас. голяк.

а че бесплатных компиляторов под эти чипы нету ?

Re: Stm32 с чего начать изучение...

Вт авг 09, 2016 18:13:28

СЦБист писал(а):ага - щас. голяк.
Шутите? :shock: http://www.st.com/resource/en/reference ... 031936.pdf

СЦБист писал(а):а че бесплатных компиляторов под эти чипы нету ?
GCC. :)
В качестве бесплатной IDE можно использовать EmBitz. Компилятор, отладчик в составе IDE и ничего больше скачивать не нужно.

Re: Stm32 с чего начать изучение...

Ср авг 10, 2016 11:19:01

а бесплатного компилятора от фирмы разработчика я как понял нету ?


что-то в той документации ни структур не черта нету (((((

где брать описание структур на конкретную периферию ?

Re: Stm32 с чего начать изучение...

Ср авг 10, 2016 11:49:32

Мурик писал(а):что-то в той документации ни структур не черта нету

Если Вы о stm32, то документация состоит из datasheet - описание электрических параметров и reference manual - описание периферии в том числе ее регистров. reference manual обычно один на все семейство в datasheet перечислено какая конкретно периферия есть в конкретном контроллере и на какие ноги она выведена.
Ответить