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

О блоге

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

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

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

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

Читатели (268)

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

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

STM32 Удобные внешние прерывания

STM32 Удобные внешние прерывания

При изучении STM32 меня приятно удивило большое количество внешних прерываний (всего 16), да и еще возможность настроить их на любой пин микроконтроллера. Такой расклад после того, как долгое время сидел на AVR — кажется фантастичным. Однако при детальном изучении радость моя несколько поуменьшилась. Оказывается, есть и ограничения:
1) Настроить прерывания можно только на один из входов, где совпадает нумерация порта.
Например, настроить два прерывания на GPIOA.0 и GPIOB.0 — не получится. Только одно из них. Это необходимо учитывать при разводке схемы.
2) Отсутствует способ вызова прерываний по нижнему уровню (иногда требуется именно этот способ, например при сочленении с WIZnet). Хотя этот недочет, в принципе, — программно решаемый.
3) Всего 7 векторов в прерываниях. А событий — 16. А это значит, что обработка нескольких событий производится в одном и том же месте.

Но даже такое положение вещей все равно гораздо более привлекательное, чем в старом-добром AVR-e.

Цель написания этой статьи — разбавить 3-е по списку ограничение — недостаток векторов, упрощение инициализации внешних прерываний. И напоследок, разберемся, что такое «слабосвязанные функции» и с чем их едят (С) Умка :). Итак, начнем:


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

Многозадачный программный таймер.

В мире микроконтроллеров, как и в мире вообще — существуют разного рода задачи. Какие-то требуют немедленного исполнения, какие-то могут подождать. Но есть и такие, которые возникают крайне редко, но их количество может быть внушительным. Вот о реализации таких задач (последних) мы и поговорим. Чтобы «убить» 7 мух(, а может быть и великанов) одним ударом — будем использовать программный таймер на базе одного аппаратного. Так как все задачи — «медленноприходящие» (интересно, есть такое слово в русском языке?) — настроим аппаратный таймер таким образом, чтобы тикал он несколько раз в секунду (например, 50 или даже 500). И создадим массив структур, в каждой из которых будет лежать вся информация по каждому программному таймеру отдельно. Итак, рассмотрим чего добился:

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

Удобная настройка GPIO портов

Настройка GPIOX портов в STM32, как уж повелось, не самое интересное занятие.
Большое разнообразие настроек в определенный момент начинает взрывать мозг, особенно если пользоваться стандартными решениями.
Например, чтобы нам настроить GPIOA.11 на 10МГцовый — выход по типу OPEN_DRAIN c выключенным драйвером — нужно выполнить следующие операции:


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

STM32 - Bit Banding

STM32 — Bit Banding


Предлагаю вашему вниманию модуль, позволяющий легко обращаться к битам устройств ввода-вывода и оперативной памяти с помощью области bit banding


#include "bitbanding.h"
...
BIT_BAND_PER(RCC->CIR,RCC_CIR_HSERDYIE)=SET;


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

GUI для встраиваемых систем - продолжение

Продолжение

Проект был успешно запущен и внедрен, работает в одном мелкосерийном изделии.
Второе изделие в процессе.
Нашлось немного времени сделать пример.
Структура примера получилась достаточно навороченная, это скорее не пример, а шаблон проекта.
Поскольку в большинстве крупных проектах использую ОС TNKernel, соответсвенно так и построен пример.
Пример привел для keil по просьбам трудящихся :), сам обычно использую eclipse + gcc. а на работе кейл.
Теперь краткое описание структуры проекта:


Читать дальше
  • +4
  • 29 мая 2013, 21:19
  • AVF
  • 2

stm32 старт для совсем ленивых.

Если вы начинаете программировать — вы должны написать на консоли Hello World
Если вы начинаете программировать MCU — вы должны помигать ледиком.
Если вы начинаете применять MCU — вы должны спроектировать и спаять отладочную плату.

Отладочных плат для STM32 — ну очень много. Шикарный проект опубликован здесь чуть больше месяца назад. Но я избалован фирмой seeedstudio.com. Поэтому мне ни один готовый проект не подходил. И вообще, чтобы «прочуствовать» чип, лучше сделать небольшой проект самому.

Так что я сотворил вот такой борд:



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

Моя концепция применения МК

При изготовлении устройств с МК встают несколько вопросов: какой МК, как и где делать печатную плату (разработку схемы не рассматриваю, обычно она тривиальна), как выводить информацию.
Предлагаю облачный подход. МК взаимодействует с PC, получает от него программы и настройки, делится с ним данными.
Преимущества очевидны: большой экран, любая графика, хоть 3D, ввод информации с клавиатуры и мышкой, опять таки любые формы ввода, мы не ограничены быстродействием МК, все сложные операции можно делать на PC.
Приведены большая куча примеров.


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

Солнечные электронные часы

Речь в статье пойдёт вот о таких солнечных электронных часах:
image

Задумывались ли вы когда-нибудь, что именно показывают ваши часы? Почему 24:00 почему-то посреди ночи? Почему к «полудню» 12:00 проходит вовсе не половина дня? К чему идёт привязка?

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

STM32DIP40 мини отладочная плата

Год назад купил себе Discovery VL довольно интересная штука и стоит не дорого.
Но она не очень удобна в использовании с «Контактными макетными платами» так как имеет ряд средних контактов которые мешают вставить его в макетку.
Поэтому люди иногда выкручиваются следующим образом.



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

Форк программы stm32flash

Наверняка, многие, кто работает с STM32 (а в особенности, не под виндой), знают о существовании такой полезной программы — stm32flash (заливалка прошивки через встроенный бутлоадер), так что, думаю, в преставлении она не нуждается. Программа живёт в виде исходников на гуглокоде. Сама по себе она работает, но в багтрекере накопилась уже куча непринятых патчей и незакрытых репортов. В конце того года у меня проскакивала мысль форкнуть и по-накладывать патчи, но нашёлся другой добрый человек, который это сделал — Tormod Volden, спасибо ему большое за проделанную работу.


Читать дальше
  • +12
  • 24 февраля 2013, 11:51
  • Alatar
  • 2