STM32Discovery-для новичка

Все о микроконтроллерах: AVR, PIC, STM8, STM32, Arduino, Altera, Xilinx, все что угодно. Этот раздел для всего что клацает байтиками.
tiny
Сообщения: 4
Откуда: ukr

Сообщение tiny » 15 сен 2011, 18:37

Привет.Вот купил себе этот модуль-помигал светодиодом,потыкал кнопочку.Хочется дальше продвигаться но мои познания английского остались где-то в 1м класе(Это очень печально)теперь мне сложно в освоении МК.Думаю я не один такой.Вот хочу у вас спросить будете ли вы продвигать STM32 для новичка?Или искать другой форум.Кста спасибо за видео

uschema.com
Сообщения: 162

Сообщение uschema.com » 15 сен 2011, 20:26

тоже не спеша учу стм32
покажите свой код мигания?
Последний раз редактировалось uschema.com 15 сен 2011, 23:48, всего редактировалось 1 раз.

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 15 сен 2011, 23:03

будете ли вы продвигать STM32 для новичка?Или искать другой форум

Прям на угрозу смахивает - "продвигай или уйду!". Я буду продвигать по мере свободного времени и желания. У меня, помимо бложика, есть семья и работа, поэтому - не все сразу. Если у вас есть конкретные вопросы - задавайте, с удовольствием отвечу.

tiny
Сообщения: 4
Откуда: ukr

Сообщение tiny » 16 сен 2011, 00:27

Хаха))))Та нет не угроза простоя оооочень слаб в это очень.И мне даже стыдно)(.Вопросы будут даже туповаты.Дом семья работа эт очень круто.
Вот вопрос ежедневный для меня это-какой купить не дорогой дисплей чтоб относительно просто было розбираться?ЧБ по типу как в эл книгах.Ну или что вы посоветуете.
Вот код мигания с миру по нитке):-
#include "stm32f10x.h"


int main()
{
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;
RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;
GPIOC->CRH |=GPIO_CRH_MODE9_0 | GPIO_CRH_MODE9_1 |GPIO_CRH_MODE8_0|GPIO_CRH_MODE8_1;
GPIOC->CRH &=~GPIO_CRH_CNF9;
GPIOC->CRH &=~GPIO_CRH_CNF8;
while(1)
{
GPIOA->CRL&=~GPIO_CRL_MODE0;
if (GPIOA->IDR & GPIO_IDR_IDR0)
GPIOC->BSRR = GPIO_BSRR_BS9|GPIO_BSRR_BS8;
for(volatile unsigned int i=0;i<100000;i++){}
GPIOC->BRR = GPIO_BRR_BR9|GPIO_BRR_BR8;
for(volatile unsigned int i=0;i<100000;i++){}
}
return 0;
}

tomatniy
Сообщения: 70
Откуда: Киев

Сообщение tomatniy » 16 сен 2011, 17:17

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

tiny
Сообщения: 4
Откуда: ukr

Сообщение tiny » 20 сен 2011, 00:25

Тут кто-то есть?)
Вотнашол код для SPI вродь правильный если можете проверьте плз.
//SPI******
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;//разрешение тактирования SPI
SPI1->CR1 |= SPI_CR1_BR_0;// 1. Ставим частоту передачи Fclck/4
SPI1->CR1 |= SPI_CR1_CPOL;// 2. Ставим Clock Polarity 1 when idl
SPI1->CR1 |= SPI_CR1_CPHA; // 3. Ставим необходимую Clock Phase
SPI1->CR1 &= ~SPI_CR1_DFF;// 4. Размер кадра - 8 бит
SPI1->CR1 |= SPI_CR1_MSTR;// 5. Устанавливаем мастер - режим
SPI1->CR1 |= SPI_CR1_BIDIMODE; // 6. Устанавливаем тип коммуникации в 1 направлении
SPI1->CR1 |= SPI_CR1_BIDIOE;// 7. Включаем только передачу
SPI1->CR1 |= SPI_CR1_SPE;// 6. Включаем SPI
SPI1->DR = 0x21;//передача байта
Я так понимаю что это 30% успеха для работы с LCD?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 20 сен 2011, 12:28

Привет, тут кто-то есть, просто я никогда не работал с SPI. Запустить SPI - это далеко не 30%. Основную часть займет конфигурация дисплея. Врядле, кто-то за тебя будет проверять твой код. Проще всего тебе взять и самому проверить.

Аватара пользователя
unidk
Сообщения: 88
Откуда: Германия

Сообщение unidk » 11 окт 2011, 17:13

2 tiny: О каком LCD идет речь?

tiny
Сообщения: 4
Откуда: ukr

Сообщение tiny » 04 ноя 2011, 19:55

Который не дорогой и работает по SPI.Например сделать часы.Я просто учусь и придумываю себе задачи

Аватара пользователя
unidk
Сообщения: 88
Откуда: Германия

Сообщение unidk » 13 ноя 2011, 01:40

Который не дорогой и работает по SPI.Например сделать часы.

Честно говоря, не особо представляю себе такой ЖКИ...
Какой он должен быть: 7-сегментный, алфавитно-цифровой или графический?
Если графика, то цветной, или ч/б?

Вот инициализация SPI (один из вариантов). Использовал ее для работы с microSD и AT45DB321.

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; // 2 линии, полный дуплекс
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; // SPI Master
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; // В посылке 8 бит
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; // В неактивном состоянии SCK = 1
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; // Начало передачи по второму импульсу
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; // Программный контроль NSS
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; // Коэффициент предделителя = 2
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; // Первым передавать старший бит
SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(Dataflash_SPI, &SPI_InitStructure);
SPI_Cmd(Dataflash_SPI, ENABLE); // Включаем SPI

Для работы кода нужно прикрутить к проекту STM32 StdLib.

Aneg
Сообщения: 17
Откуда: Украина

Сообщение Aneg » 13 янв 2012, 06:00

Пытаюсь разобраться с принципами программирования на С. Вот например в этой строке:
RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;
Что означает "->" и "|="?

А в этой:
PI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
Что означает точка между двумя словами?
Последний раз редактировалось Aneg 13 янв 2012, 11:36, всего редактировалось 1 раз.

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 13 янв 2012, 07:11

RCC->APB2ENR |= RCC_APB2ENR_SPI1EN; есть не что иное, как сокращенная форма записи строки RCC->APB2ENR = RCC->APB2ENR | RCC_APB2ENR_SPI1EN;
А -> и точка - это признаки обращения к элементам структуры.
Точка используется при работе с самой структурой, а -> при работе с указателем на нее. Про структуры и указатели лучше почитать литературу.

spec_spec
Сообщения: 3
Откуда: Украина

Сообщение spec_spec » 25 янв 2012, 16:11

Сетодиодом поморгал, в усарт данные послал с усарта принял, теперь вот пытаюсь подключить ENC28j60 по SPI кто нибудь пробовал ? Пока не получается по скачанным примерам работать - т.к. считывается мусор. Вот не знаю как подступиться

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 25 янв 2012, 17:15

Ну сам SPI простой как грабли... А чтоб считывалось надо соблюдать требования производителя ) Наверняка косяк где-то )

spec_spec
Сообщения: 3
Откуда: Украина

Сообщение spec_spec » 28 янв 2012, 17:06

Получилось забежать к товарищу на 10 мин на осцилограф. Так вот при запуске простой программы типа НСС вниз, задержка, НСС вверх происходит следующее. смотрю на НСС и на SCK. Пока держишь кнопку ресет НСС - 1 и по SCK идут импульсы. Отпускаешь кнопку - импульсы перестают идти НСС опускается на время задержки и подымается, клок не идет ? Почему так может быть в простых граблях? Ниже картинка
Вложения
spi_work.jpg
look
spi_work.jpg (55.28 КБ) 26199 просмотров

spec_spec
Сообщения: 3
Откуда: Украина

Сообщение spec_spec » 03 мар 2012, 10:52

все заработало - снял экран с eval board к которому тоже был выведен PA

Аватара пользователя
N1X
Сообщения: 321
Откуда: Беларусь, Гомель

Сообщение N1X » 03 мар 2012, 19:33

=) Поздравляю!
Я вот тож в своем проекте черти сколько искал грабли, а причина оказалась на поверхности )

tetraa
Сообщения: 41
Откуда: киев

Сообщение tetraa » 07 апр 2012, 11:34

Привет. как реализовать преривание по таймеру, пытался найти пример на других сайтах, одни косяки , использую ИАР, постоянно ругается на мои попытки организовать это приривание по таймеру, надо получить чтото подобное как в АВР, чтоб можна было настроить предделитель, канал
совпадения, сброс по совпадению(можно ручной), как организовать то ?, всё зашифровано в полях структур.

Pavlya
Сообщения: 21
Откуда: Киев

Сообщение Pavlya » 08 апр 2012, 00:28

Посмотри в примерах, которые идут со стандартной библиотекой периферии

tetraa
Сообщения: 41
Откуда: киев

Сообщение tetraa » 30 июн 2012, 15:58

Просто оставлю это тут, может кому-то будет полезно.
Можно ли прошить микроконтроллер STM32Fxx (STM32F405, STM32F407, STM32F415, STM32F417) через STM32vldiscovery?
Ответ - можно.
Долго гуглил но на русcкоязычных сайтах и форумах ничего толком не нашёл.
На практике прогал через IAR 6.3 Просто поменяв при этом чипик в проэкте на STM32F407VE и включил тут же что хочу юзать FPU. И всё воркает :-) Толко чёто микруха не запускалась от питания который выведен на SWD разъем, взял 3.3V с другого пина на платке.

tetraa
Сообщения: 41
Откуда: киев

Сообщение tetraa » 31 июл 2012, 16:52

Привет. Как попросить IAR разместить переменную/масив/функцию по адресу. на С. типа как в ассемблерре написать .org 0x3000 и всё что ниже будет в памяти начиная с 3000h ?

Аватара пользователя
BSVi
Адепт
Сообщения: 3576
Откуда: Киев

Сообщение BSVi » 31 июл 2012, 18:06

Написать после переменной @ 0x1234. Это расписано в документации на IAR.

tetraa
Сообщения: 41
Откуда: киев

Сообщение tetraa » 01 авг 2012, 13:36

Спасибо, BSVi :)

webkirov
Сообщения: 277
Откуда: Депрессивный регион

Сообщение webkirov » 09 авг 2012, 04:23

Хочу помигать светодиодом с секундным периодом. Для секундного периода пытаюсь приладить RTC. Все это дело происходит на плате STM32 VL Discovery (та что халявная). IDE Atollic

В Си ни бум-бум, но кое-как написал код.

Код: Выделить всё

/* Includes */
#include "stm32f10x.h"


int main(void)
{
/*Настройка Pin 8*/
   RCC->APB2ENR |=RCC_APB2ENR_IOPCEN;    //Тактирование на порт С
   GPIOC->CRH |=GPIO_CRH_MODE8;      //Pin 8 на выход с частотой 50 МГц
   GPIOC->CRH &=~GPIO_CRH_CNF8;      //Push-Pull Output


   /*Настройка RTC*/
   RCC->APB1ENR |=RCC_APB1ENR_PWREN |RCC_APB1ENR_BKPEN; //Power interface clock enable; Buckup
   PWR->CR |=PWR_CR_DBP;            // Доступ к RTC and Backup registers разрешен

   RCC->BDCR |=RCC_BDCR_BDRST;         //CБРОС РЕГИСТРА BUCKUP DOMAIN REGISTER
   RCC->BDCR &=~RCC_BDCR_BDRST;

   RCC->BDCR |=RCC_BDCR_LSEON | RCC_BDCR_RTCSEL_LSE; //ЗАПУСК LSE-OSCILLATOR; LSE - ИСТОЧНИК ДЛЯ RTC
   while (!(RCC->BDCR & RCC_BDCR_LSERDY)){} //ЖДЕМ ПОЯВЛЕНИЯ ФЛАГА LSEDRY (ГОТОВНОСТЬ LSE)

   RTC->CRL |=RTC_CRL_CNF;            /*УСТАНОВКА ДЕЛИТЕЛЯ*/
   RTC->PRLL =32767;
   RTC->CRL &=~RTC_CRL_CNF;


   RCC->BDCR |=RCC_BDCR_RTCEN;         //ЗАПУСК RTC



   while (1)
   {

      if (RTC->CRL & RTC_CRL_SECF)
      {GPIOC->BSRR |= GPIO_BSRR_BS8;
         RTC->CRL &=~ RTC_CRL_SECF;

      } else {GPIOC->BRR |= GPIO_BSRR_BR8;}
   }
   return 0;
}


Никак оно не мигает. Не могу понять, в чем проблема?!

webkirov
Сообщения: 277
Откуда: Депрессивный регион

Сообщение webkirov » 09 авг 2012, 13:48

И ещё какая-то непонятка. Когда пошагово отлаживаю этот код (RTC) вижу что в регистре RTC_ALRH постоянно меняются значения, а в регистре RTC_CNTH ничего не меняется (всегда ноль). Читаю документ RM0041 Reference manual на странице 462, где как я понял, сказано, что в этот регистр заносится значение, с которым сравнивается значение в регистре RTC_CNTH , и при совпадении значений происходит прерывание. Почему там все время меняются значения? Я туда ничего не записываю.

Вернуться в «Микроконтроллеры и ПЛИС»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 7 гостей