Рейтинг
28.46
голосов: 30

О блоге

Работа с ядром CortexM3 и периферией STM

Администраторы (1)

Модераторы (0)

Модераторов здесь не замечено

Читатели (264)

ploop _YS_ m3hc Krieger Tabke marvin_yorke Ultrin WildCat hexanaft Vga Alatar mzw Reverb grand1987 dievgen woogle PahanMenski anper citizen ZiB

Все читатели блога

STM32, примеры кода

Осваиваю периферию STM32F103C8, пишу код с комментами, подумал что может кому-то пригодиться (или мне самому по-позже). По ходу обучения буду дополнять эту статью.

Считываю данные с температурного датчика внутри чипа и передаю по USART. Используется таймер и прерывания. Прерывания убраны, добавлен DMA.


Читать дальше

Отладка STM32 в среде Eclipse+GCC

Так как я недавно перешел на использование связки Eclipse+CodeSourcery G++ Lite в качестве среды разработки для микроконтроллеров STM32, то у меня встал вопрос об отладке с помощью ST-Link.
Решение было найдено в виде ST-Link gdbserver, который легко прикручивается к Eclipse. О чем я кратко и расскажу в этой статье.


Читать дальше

Используем CMake и GCC для программирования uC STM32 в линуксе.

Всё у армов хорошо, одна беда — все рассчитано на работу в определенных пропиетарных м платных IDE, которые, естественно, никто портировать на linux не собирается. Для линукса есть такая хорошая вещь — ODeV Idea используются make + gcc + eclipse + openocd. Однако, я решил пойти немного другим путем — разобратся, из чего состоит проект для stm32 и использовать cmake для сборки проектов.
UPD: Теперь всё лежит на github'е — https://github.com/ObKo/stm32-cmake
UPD2: Данный текст слегка устарел (но общий принцип сохранился), актуальные доки на github'е


Читать дальше

Атомарные операции в Cortex-M3


Часто возникает ситуация, когда одна и та-же переменная используется и изменяется из разных потоков или из островного потока и прерываний. В этом случае модификацию такой разделяемой переменной необходимо осуществлять атомарно. Простейший способ обеспечения атомарности — это запрет прерываний на время операции, но это не наш метод — в ядре ARM Cortex-M3 есть более интересные средства для этого.


Читать дальше

Особенности использования прерывания Half transfer при работе с DMA

Если обрабатывается большой массив данных например от АЦП, то удобно применить для этого прямой доступ к памяти(ПДП). С использованием ПДП данные складываются в массив и потом могут быть обработаны. Если необходим непрерывный сбор данных и их обработка, то сбор можно вести с использованием ПДП, а обрабатывать их в прерывании ПДП. Данные пишутся в буфер циклически. По заполнении данными больше половины буфера, выставляется Half Transfer Interrupt Flag (HTIFx), По заполнении всего буфера выставляется Transfer Complete Interrupt Flag (TCIFx). Прерывания генерируются по установке любого из этих флагов (если разрешены). В обработчике прерывания эти флаги могут быть прочитаны и выяснено, насколько заполнен буфер — наполовину или целиком. Если буфер заполнен наполовину — то обрабатывается первая половина буфера. Данные в это время пишутся во вторую половину. И наоборот. Таким образом можно осуществить непрерывную обработку данных.

Читать дальше

Использование gcc для stm32f100

Примерно полгода назад я обзавелся самым мелким контроллером stm32f100c4. Здесь я хотел бы изложить свой опыт применения средств разработки gcc вживую, без графической оболочки. Описывается установка, создание проекта — использование Makefile, прошивка через UART, отладка через gdb на stm32vldiscovery, ну и самое главное — грабли

Читать дальше

STM32-VLDiscovery: мой вариант быстрого старта.

Внимание, статья обновлена. См. примечание в конце.

***

Предисловие.

Некоторое время назад, я, как и многие другие, принял участие в акции EBV, заказав себе упомянутую в названии платку. Моя первая попытка поковырять ее не увенчалась успехом, да и буквально одновременно с ней мне в руки попал LaunchPad… Одним словом, лежал STM32-Discovery буквально до сегодняшнего дня и пылился. Но в конце концов я взялся за него с твердым намерением наконец-то помигать светодиодом во что бы то ни стало. Естесственно, прежде всего я стал читать уже написанное на русском и английском. Однако, несмотря на большое количество статей, все они показались мне слишком разрозненными, а некоторые из более цельных — излишне объемными для начала. Возможно, я плохо искал, но так нигде и не нашел текста, прямо и без тучи лишней информации повествующего о том, как с нуля помигать светодиодом на STM32-Discovery. Полезные части встречались в разных местах, и вот я решил объединить их в по возможности лаконичное и законченное повествование.



Читать дальше
  • +7
  • 30 апреля 2011, 22:46
  • _YS_

Программирование FLASH

Часто необходимо сохранять конфигурационные параметры или еще что либо при отключении питания. В stm32 для этой цели возможно использовать либо backup регистры либо встроенную flash память. 20 регистров backup домена по 2 байта часто недостаточно. Кроме того для поддержания бекап домена нужна отдельная батарейка. Флеш лишена этих недостатков, но имеет свои собственные.

Читать дальше
  • +6
  • 27 апреля 2011, 20:15
  • OlegG

Воспроизведение звука на STM32-Discovery при помощи Speex

Многие уже воспользовались известным конкурсом, и заказали себе плату STM32-Discovery. Я тоже заказал себе такую. Захотелось сделать на ее основе какую либо конструкцию. Меня заинтересовал AN2812 от ST, в котором описывалось воспроизведение звука с использованием библиотеки Speex для STM32. Однако недостатком аппноута было то, что в нем использовалась stm32f103, более мощная чем stm32f100, установленная в discovery. Также аппноут рассчитан на работу с более сложной отладочной платой. Поскольку я только начинал изучать STM32 (это мой первый проект, до этого я только светодиодом мигал), я решил не пытаться запустить код аппноута, а собрать весь проект с нуля. Проект был создан в IAR.
Вид получившейся конструкции:




Читать дальше

STM32 – Подключаем энкодер

Продолжаем разговор, сегодня очень кратенько о подключении энкодера к микроконтроллеру.
IMG_5311


Читать дальше
  • +6
  • 19 марта 2011, 19:24
  • ZiB