***********************
Вид для печати
***********************
Viktor2312, Я набросал по просьбе zst пару уроков http://www.zxkot.ru/
Сразу предупреждаю - писатель из меня никакой ...
Конкретно - http://www.zxkot.ru/firmware/f01/st09 и http://www.zxkot.ru/firmware/f01/st10
http://easyelectronics.ru/category/arm-uchebnyj-kurs - для расширения кругозора
http://ziblog.ru/ - довольно много примеров работы с стм32
книга на русском "Инсайдерское руководство по STM32".
psb, Там многое на SPL .
Я бы пока не рекомендовал...
спл вообще в топку, сразу. даже не смотреть, даже как пример для передирания.
в ссылках не многое на спл, ziblog на регистрах шпарит.
psb, ZIB еще проприетарщину не любит , многие проекты сборка на makefile'ах
Но суть, да согласен, изложена понятно .
http://rutracker.org/forum/viewtopic.php?t=2305709
Ну так бери обе . F4 мощней , но на ней многие пины уже заняты набортной периферией .
Дискаверина F0 так же неплоха.
Ты еще по спектру задачь смотри: если кучей пинов дергать - это одно, если сэмплировать что-то - то лучше брать где больше RAM'а.
А что кокос не хочешь попробовать?
Viktor2312, MDK4.73 можешь не качать . И счас подключусь к раздаче.
alx32, А зачем нужен геморрой ? :)
---------- Post added at 11:17 ---------- Previous post was at 11:08 ----------
Их в свое время много кто нахаляву получили . :)
Более-менее ценным становиться после запайки 103 чипа . ;)
Кактус(кокос) == проблемы с отладкой , танцы с бубном при переносе проекта . Оно надо ?
Подобными IDE пользуются нубы , нежелающие что либо изучать...
В Keil на минимальном проекте типа, можешь в отладчике , потыкав галки, запустить/изучить работу периферии ...Код:main() { while (1)}
Ну не знаю, я вот пользуюсь сборкой robocraft, потому как сижу в линухе...
alx32, И SPL , угу ? :))))
У меня на лине и эклипсина работает ...
Гы... Стою на раздаче , никто не тянет :)
Это эти танцы ? http://robocraft.ru/blog/ARM/653.html :biggrin:
Оно устарело да и сайт с аурдинщиками это что то .
Я знаю единственный вменяемый мануал под эклипс и линь
http://kazus.ru/forums/showthread.ph...hlight=eclipse
Keil и зови MDK 5
Чем вам SPL не угодила? Зато читабельность/сопровождаемость кода в разы лучше.
STM начало осознавать всю ущербность SPL , выложили примеры на F0 без индусского кода...
K&R как и всегда . И что значит "Си, который используется в Keil" ?
С он и в Африке С ...
Вот ...http://rghost.ru/54676938
Мда ... Ну для начала читай это http://lib.ru/CTOTOR/starterkit.txt
Не надо искать никаких С для МК . Если привык к специфическим фичам каких-то недокомпиляторов весьма печально...
Можно, я тоже пролезу в эту школу, как начинающий?
Я второй день ковыряюсь со своей девбордой на STM32L152RB, что о ней известно - есть там суровые отличия от F, код без плясок с бубном не перенесешь.
Поэтому я пользуюсь макросами от ZiB для инициализации GPIO.
С этим контроллером я на уровне "нажать кнопу, зажечь светик"...
---------- Post added at 19:28 ---------- Previous post was at 19:26 ----------
Также поставил Keil MDK 5.1 с торрентов.
Хоть мне IAR привычней. но лучше пока быть "как все" :)
Ewgeny7, Чем тебе сие не приглянулось ?
Что за код переносишь?Код:GPIOA->AFR[0]|=(1<<8)|(1<<12);
GPIOA->MODER &=~
GPIO_MODER_MODER2 |
GPIO_MODER_MODER3
;
GPIOA->MODER|=
GPIO_MODER_MODER2_1|
GPIO_MODER_MODER3_1
;
GPIOA->OSPEEDR|=
GPIO_OSPEEDER_OSPEEDR2|
GPIO_OSPEEDER_OSPEEDR3
;
Именно приведенное и используется, в макросах или без них, голым кодом.
А вот конструкции типа
уже не кошерны, нет таких определений для этого камня.Код:GPIOC-> CRH &= ~( GPIO_CRH_CNF9 | GPIO_CRH_CNF8 | GPIO_CRH_MODE9 | GPIO_CRH_MODE8 );
GPIOC-> CRH |= GPIO_CRH_MODE9_0 | GPIO_CRH_MODE8_0 ;
---------- Post added at 21:21 ---------- Previous post was at 21:20 ----------
Это пока не важно, на стадии щупания камня переносится всё, что под руку попадается :)
Дык и конфигурация пинов обширней стала . Если ранее в 10х ( твой код)
пины конфигурировались в одних регистрах, GPIOx_CRL для пинов 0-7 и GPIOx_CRH для пинов 8-15 , то в более новых GPIOx_MODER .
Ранее было по 4бита на пин , теперь по 2 бита в GPIOx_MODER и еще куча регистров на скорость, пуллапы и т.д.
dosikus, вот и я о том же, после 8-битников приходится копать даташиты неподеццки :)
GPIOx_MODER
2 бита на пин
00: Input (reset state) - Вход
01: General purpose output mode -Выход общего использования
10: Alternate function mode -Альтернативная функция
11: Analog mode -Аналоговый режим
GPIOx_OTYPER
1 бит на пин
0: Output push-pull (reset state) - пушпул
1: Output open-drain - С открытым стоком
GPIOx_OSPEEDR - скорость пинов
2 бита на пин
00: 400 kHz Very low speed
01: 2 MHz Low speed
10: 10 MHz Medium speed
11: 40 MHz High speed
GPIOx_PUPDR - пуллапы/ пулдаун
2 бита на пин
00: No pull-up, pull-down
01: Pull-up
10: Pull-down
11: Reserved
ну и альтернативная функция для пинов GPIOx_AFRх
---------- Post added at 21:43 ---------- Previous post was at 21:42 ----------
Трудно первые месяца 2, потом привыкаешь :biggrin:
И другие чипы уже кажутся ущербными .
Не, похоже там RC цепочки коммутируются , фронты режут . Если не вру :biggrin:
---------- Post added at 22:00 ---------- Previous post was at 21:54 ----------
Ewgeny7, Сразу же - осторожней с PortA , конкретно с пинами 13 и 14 .
На них повешен SWD .
Но если на борту дискаверины STLink v2 то не страшно -> Connect under Reset .
Да, спасибо, вроде есть такое.
---------- Post added at 22:55 ---------- Previous post was at 22:03 ----------
dosikus, как правильно описать опрос пина (вход)?
Чую, что неправильно описал конструкцию IF.Код:if (GPIOA->IDR == GPIO_IDR_IDR_0)
{
GPIOB->ODR |= GPIO_ODR_ODR_6;
GPIOB->ODR &= ~GPIO_ODR_ODR_7;
}
else
{
GPIOB->ODR |= GPIO_ODR_ODR_7;
GPIOB->ODR &= ~GPIO_ODR_ODR_6;
}
Вход - пин 0 GPIOA
---------- Post added at 22:58 ---------- Previous post was at 22:55 ----------
Вот сама инициализация входа (кнопка) -
GPIOA->MODER &= ~ GPIO_MODER_MODER0; // GPIOA_0 - input
GPIOA->PUPDR |= GPIO_PUPDR_PUPDR0_0; //pull-up input
---------- Post added at 23:01 ---------- Previous post was at 22:58 ----------
Виктор2312, покупай такую же девбординку, там Кортекс3, но сильно экономичный, будем вместе ковырять ее :)
Ога, сам спросил - сам ответил :)
Вот так всё работает, забыл про фильтр остальных пинов порта -
if (GPIOA->IDR & GPIO_IDR_IDR_0)
---------- Post added at 23:30 ---------- Previous post was at 23:27 ----------
А вот это уже фигня.
Синтаксис С прост, не сложнее Паскаля или Васика.
Увидев готовые конструкции, ты всё поймешь. А не поймешь - для этого мы здесь и собрались все :)
Моя платка - http://tixer.ru/catalog/debug-board/...32l_discovery/
Правда, цена здесь высоковата, можно подешевле найти.
---------- Post added at 23:34 ---------- Previous post was at 23:30 ----------
if (условие)
{
тело
}
else
{
тело
}
Ведь несложно?
А = B; - еще легче
A |= B; - чуть сложнее, но тоже не премудрость - A = A or B.
Ну и тому подобное. Я язык С не учил, он в принципе и так читаем, а разбор готовых программ еще и правила синтаксиса в голову вобьет :)
---------- Post added at 23:39 ---------- Previous post was at 23:34 ----------
Чем меня всегда отпугивал С - это громоздкими определениями.
Если в своей программке на Васике ты напишешь
LET A=5
То в С принято гнуть пальцы и раздувать сопли типа
const TOP_VALUE_OF_COUNTER = 5;
_MAIN_FUCKING_COUNTER_FOR_SHITTING_MEGA_CYCLE = TOP_VALUE_OF_COUNTER;
Хотя разницы в действиях и результате - никакой :)
Ну как... Частично.
Свои определения ты называй как хочешь, хоть нецензурно.
Но, например, GPIOB->MODER ты по другому не назовешь, это зарезервированные имена, регистр режима работы регистра порта В.
Тут проще понять устройство самого порта, как регистра, и разобраться как он управляется. Это действительно несложно.
Реально напоминает 580ВВ55 с его РУС :)
---------- Post added at 23:54 ---------- Previous post was at 23:53 ----------
Да, именно такой у меня и стоит. При всей своей мощи кушает какие-то мифические микроамперы, может работать от двух гвоздей в лимоне...
---------- Post added at 23:58 ---------- Previous post was at 23:54 ----------
Это интернет-магазин, или обычный? Просто я тоже хочу 32F купить, но у нас они несколько дороговаты.
У меня сейчас как раз такая, вот с ней и ковыряюсь. Да, цена хорошая, даже если с доставкой.
---------- Post added at 08:05 ---------- Previous post was at 08:03 ----------
По крайней мере, я делал всё точно так же. Работает.
Только там еще появлялось окно, предлагающее загрузить всякие либы и определения для выбранных чипов. Но это вроде можно сделать в любой момент потом.
---------- Post added at 08:09 ---------- Previous post was at 08:05 ----------
Я об этом и написал. Что можешь как захочешь, но "по-пацански" там любят в название вкладывать всю информацию. Это необходимо для понимабельности, но может вызывать панику, когда впервые лезешь в чужой код :)
Viktor2312, У тебя при установке запускался менеджер паков ?
Надо установить паки на STM32, те что желаешь, они в папке PACK
Можно так же установить из папки Legacy Support , там куча примеров от Keil и слава богу не на SPL .
http://s020.radikal.ru/i716/1404/2d/7e6e67b8ed46.png
---------- Post added at 08:33 ---------- Previous post was at 08:16 ----------
!!! Земляки Хорошиста подложили свинью русскоговорящим .
В папке Rus_font_dll есть все для исправления - меняем UvEdit.dll на прилагаемый . Далее , если win7 запускаем KEil из под админа .
Идем Edit ->Configuration .
Ни в коем случае не меняем опцию Encoding !
Шрифт выставляем с Courier New на просто Courier
http://i056.radikal.ru/1404/22/ebabd88046f3.jpg
http://s018.radikal.ru/i515/1404/b1/bd73792025bd.jpg
---------- Post added at 08:44 ---------- Previous post was at 08:33 ----------
Для вашей дискаверины путь к устанвленному паку Keil\ARM\Pack\Keil\STM32L1xx_DFP\1.0.2
В каждом паке :
даташит, референс мануал, мануал на ядро.
Основные хэдеры и исходники .
Алгоритмы для флэш.
---------- Post added at 08:52 ---------- Previous post was at 08:44 ----------
Все документы на выбранный в проекте чип , доступны на вкладке Books
Для просмотра рекомендую Foxit Reader посвежее.
http://s019.radikal.ru/i640/1404/09/4e00535be2fe.jpg
Все, хватит .
Можешь ставить , можешь нет .
В основном там нужны примеры для Keil'вских демоборд , они весьма прозрачны и без геморройной SPL ...
Есть и минимальные проекты под все дискаверины см. папку Keil\ARM\Boards\ST
Кстати Жень, и твоя кнопко-нажималка :)))))))) см Blinky
Установил на работе весь софт, подключил девборду, начинаем...
Начнем с тактирования.
Запаиваю внешний кварц. Там вроде как 16Мгц требуется.