Высказывания и цитаты:

Самое опасное в войне - это недооценить противника и успокоиться на том, что мы сильнее.
В.И. Ленин

« Предыдущая страница   

  • 27Дек

    Доброго дня! В предыдущих моих статьях по микроконтроллерам STM32 я ничего не говорил об аппаратной части, а только о программной, касающейся больше языка СИ, показав возможности этого типа микроконтроллеров в работе с графическим дисплеем.

    Сейчас мы приступим к созданию проекта с нуля. Итак, среди большого выбора микроконтроллеров семейства STM32 мы выбрали тот, который популярен, недорог и является достаточно мощным — пусть будет все тот же STM32F103VCT6. Чтобы работать с ним нам нужны два мануала  STM32F103VCT6-STMicroelectronics.pdf (2Mb)    и    STM32 Reference manuals.pdf (10Mb). В Reference manual дается общее описание для семейства STM32 F101,F102,F103,F105,F107 — а именно, то, что имеет общее устройство и общие принципы работы. В  STM32F103VCT6-STMicroelectronics.pdf даны распиновка разных типов корпусов, адресация модулей и памяти — то есть то, что имеет частные отличия от основного описания.

    Итак скачиваем оба мануала, открываем тот, который 2Mb и смотрим Pinouts. STM32F103VCT6 выпускается в трех корпусах (64pin, 100pin, 144pin). Пусть мы будем использовать контроллер с платы HY-MINI STM32, то есть на 100 вывод0в,

    100pin

    Хочу обратить внимание, что распиновка у микроконтроллеров STM32 F101 — F107 одинаковая. Переходим к выбору среды разработки. В настоящее время среди наиболее популярных сред есть Keil, IAR и CooCox IDE. Первые две платные, а третья абсолютно бесплатна и это значит, что есть смысл начать именно с нее. Но забегу вперед. Если вы займетесь отладкой устройств на данных типах микроконтроллеров, то тут безусловный лидер Keil (о нем я немного рассказал в предыдущих уроках). А с точки зрения удобства для тех, кто только начал изучать STM32 здесь я отдаю предпочтение CooCox IDE.

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

  • 02Дек

    Урок 5. Что меня заинтересовало в демо-прошивке — так именно отображение графических элементов, а именно окошек, похожих на Windows, графиков и картинок. Работая с этими элементами, мы можем делать удобные панели HMI (human-machine interface), которые будут интуитивно понятны любому человеку, и у которых не будет множества неизвестных кнопочек, лампочек и тумблеров.
    К счастью, для нас уже создали библиотеки графических примитивов, которые позволяют использовать buttons, checkbuttons, radiobuttons и другое в наших целях. Одной из таких библиотек является stm32_embedded_GUI_Library (размер около 10 Мб), которая включает в себя программу для Windows — ResourceEditorGUI и проекты с исходными кодами для микроконтроллера. О возможностях этой библиотеки, будет посвящена другая статья.

    Аналог графических элементов Windows я нашел и в других самоделках. С них мы и начнем, потому что любой элемент можно вытащить из одного проекта и вставить в другой, что очень удобно, потому что элементы можно добавлять по мере надобности.

    Первый графический элемент —  Button (кнопка).

    Я написал проект TouchPanel_rus_symbol.rar в Keil для платы Hy-Mini STM32 на основе примера из Урока №2. Итак, при подаче питания на дисплее появляется следующее меню с четырьмя кнопками и маленькой картинкой (качественное изображение мой телефон сделать не смог):

    IMG00671

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

  • 30Ноя

    Урок №4. Да, сегодня я в ударе, не иначе — написать третью статью за день. В проекте из архива TouchPanel.rar  калибровку touch экрана приходится делать каждый раз при включении питания, что не очень удобно, ведь можно использовать для калибровки под конкретный дисплей константы, заранее записанные в памяти микроконтроллера.
    IMG00675
    Итак, открываем файл TouchPanel.c, калибровка происходт по трем точкам, еще эти точки являются местом для появления курсора.
    Coordinate DisplaySample[3] = {{45,45},{45,270},{190,190}};

    Теперь нам нужна функция
    void TouchPanel_Calibrate(void)
    {
    uint8_t i;
    Coordinate * Ptr;
    for(i=0;i<3;i++)
    { LCD_Clear(Black);
    GUI_Text(10,10,"Touch crosshair to calibrate",0xffff,Black); delay_ms(500);
    DrawCross(DisplaySample[i].x,DisplaySample[i].y);
    do { Ptr=Read_Ads7846(); } while( Ptr == (void*)0 );
    ScreenSample[i].x= Ptr->x; ScreenSample[i].y= Ptr->y;
    }
    setCalibrationMatrix( &DisplaySample[0],&ScreenSample[0],&matrix ) ;
    LCD_Clear(Black);
    }

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

  • 30Ноя

    Урок№3. В этом уроке мы научимся выводить русские символы на дисплей.

    Если Вы купили себе плату разработчика STM32, то, я думаю, заметили, что эти платы произведены в Китае, и соответственно догадались, что примеры, которые есть на диске к платам (если нет диска — можете скачать в интернете), тоже написаны китайскими программистами.

    Откройте проект из Урока 2 — TouchPanel для платы HY-Mini STM32. Откомпилируйте проект, если проект ни разу не компилировался. Найдите в main функцию TouchPanel_Calibrate(), в ней есть другая GUI_Text(), в которой PutChar(), и наконец GetASCIICode(). Как искать функцию мы уже знаем из урока 2 — правой кнопкой мыши нажимаем на функции и выбираем go Difinition of… . Так мы доходим до файла AsciiLib.c, в котором хранится таблица символов кодировки Ascii кода  —  static unsigned char const AsciiLib[95][16] — 95 букв из 16 байт каждая.

    Каждая буква, которая отображается на дисплее, должна быть описана в таблице, потому что дисплей не знает, какие буквы вообще бывают. Вот таблица Ascii
    ascii2
    Читать дальше »

  • 30Ноя

    Урок №2. Доброго времени суток!

    Итак, мы купили с сайта aliexpress.com платы разработчика Hy-Mini STM32 (электрическая схема в формате pdf MiniSTM32V-Schematic.rar ) или Hy-Smart STM32, установили среду разработки Keil, посмотрели с диска все примеры и поняли, что они из себя представляют. Это совсем небольшой список возможностей того, что было в демо-прошивке. Исходные коды являются результатом чьей-то интеллектуальной работы, на которую были затрачены время и деньги, и поэтому просто так выкладывать современные работы не каждый производитель захочет. Но и на основе этих примеров мы разберемся что к чему, и сделаем то, что нас интересует.

    Для того, чтобы приступить к работе, возьмем один из стандартных примеров для Hy-Mini STM32 на диске TouchPanel.rar . Если Вы посмотрите его в работе, то увидите, что он предлагает сделать калибровку экрана по трем точкам, а после  — появится черный экран, на котором можно рисовать стилусом. Этот пример не имеет пока ничего лишнего, поэтому с ним проще разобраться — с него мы и начнем.

    Открываем проект TouchPanel->MDK-ARM-> Project.uvproj и компилируем.

    Хочу обратить внимание, что по-умолчанию в Windows расширения файлов не отображаются, что не совсем удобно для работы программиста – визуально мы не можем определить тип файла и поменять расширение не можем тоже. Рекомендую включить эту опцию. В WindowsXP делается так: открываем любую папку, в самом верху папки выбираем Сервис->Свойства папки->Вид. И убираем галочку Скрывать расширения для зарегистрированных типов файлов. В Windows7 также открываем любую папку, нажимаем кнопку на клавиатуре Alt, у нас появляется меню, из которого выбираем Сервис->Параметры папок->Вид. И убираем галочку Скрывать расширения для зарегистрированных типов файлов.

    Теперь посмотрим как работает программный симулятор. Для этого надо посмотреть, настроен ли он. Нам нужен пункт меню Project->Options for target… . В открывшемся окне Options for target на вкладке Debug должно стоять: Use simulator – использовать программный симулятор. Жмем ОК. Открываем меню Debug->Start/Stop Debug Session. Появилась желтая стрелка, показывающая текущий шаг выполнения программы. Я думаю, что изучение любой программы лучше начинать с запуска отладчика в режиме программного симулятора, чтобы легче было уловить алгоритм работы программы и взаимосвязь файлов в проекте. Дело в том, что в STM32 их слишком много. И, не будь такой совершенной среды разработки, в этих файлах можно было бы запутаться.

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

Последние комментарии

  • Извините, не могу понять систему линков на Уроки (интересует...
  • I have no idea why some of the text were lost when I upload ...
  • Answer to above Mr Alexander You sent us one 16F886 proje...
  • Answer to above Mr Alexander You sent us one 16F886 proje...
  • Разводилово это. Не повторяйте наших ошибок. Испытано на себ...