SDCC для STM8. Таймер и обработка прерываний

27 января 2014 г. 21:39 STM8   C  

В прошлой статье я рассказал про то, как установить компилятор SDCC в linux и как с помощью него собрать код на C для STM8, а также поделился библиотекой работы со стандартной периферий STM8S, которая поддерживает SDCC. Сегодня я хочу представить еще один пример, в котором будет использован таймер. В примере мы объявим обработчик прерывания для таймера и выполним в нем переключение состояния светодиодов. 

Я буду использовать ту же библиотеку что и в прошлый раз. При внесении изменений для поддержки SDCC в библиотеку я постарался сделать это так, что бы код написанный под SDCC не отличался от кода для других компиляторов. По этому этот же пример с этой же библиотекой должен точно так же компилироваться под IAR EWSTM8, COSMIC и RAISONANCE.

Компилятор SDCC для STM8 в linux

26 января 2014 г. 17:03 С   STM8  

STM8 это дешевые 8и-битные микроконтроллеры от фирмы ST. По начинке и цене эти контроллеры превосходят популярные AVR, но одной из больших проблем в их использовании является отсутствие  открытого компилятора, в том числе для ОС linux, под которой работает достаточно много программистов встраиваемых систем. Одним из свежих, и еще толком не испытанных решений является мультицелевой компилятор SDCC - Small Device C Compiler, поддерживающий стандарт ANSI C. Поддержка STM8 еще официально даже не объявлена, однако уже частично реализована. Я решил попробовать компилятор в действии и скомпилировать им простой код, мигающий светодиодами на STM8S. Прошивку я выполнял с помощью программатора Versaloon так как под St-link я пока не нашел linux-софта, способного работать по SWIM. Я купил дешевые контроллеры STM8S с памятью всего в 8 Кб флеша, по этому в них нету встроенного UART-бутлоадера. Для обладателей камней с бутлоадером - 32K (Medium Density) and 128K (High Denisty) - можно в качестве программатора использовать обычный UART преобразователь (например USB-UART на cp1202), а в качестве прошивающего софта попробовать stm8flash (порт бутлоадеровской прошивалки под STM32 stm32flash).

Для того чтобы использовать структуры с периферией и дефайны битов я использовал стандартную библиотеку от ST STM8S/A Standard peripheral library 2.1.0. Так как библиотека не поддерживает компилятор SDCC, мне ее пришлось немного доработать напильником.

Скачать плату, библиотеку STM8 SPL для sdcc, и пример.

Самодельный программатор/отладчик ST-LINK/V2 для STM8 и STM32

18 ноября 2013 г. 21:03 STM32   STM8  

ST-LINK/V2 позволяет программировать и отлаживать контроллеры STM32 и STM8, и поддерживается такими популярными средами разработки как Keil uVision, IAR EWARM, CoIDE, IAR EWSTM8 и другими. Оригинальный программатор стоит около 50$ (в чайне видел такой же за 35$). Также у этого программатора куча китайских клонов, различающихся степенью урезаности (отсутствием компонентов), вплоть до свистков за 7$. Кроме того, программатор распаян на платах STM*Discovery, опять же в урезанной версии и умеющий работать только с STM32 или только с STM8 в зависимости от того, какая дискавери. 

Но иногда проще и интереснее сделать программатор самому, особенно если для этого не  нужно много усилий. Все детали мне обошлись меньше чем в 5$ в местном магазине радиодеталей. Прошить сам программатор можно по интерфейсу UART (например с помощью любого преобразователя USB- UART).

Что умеет программатор/отладчик ST-LINK-V2:

  • Прошивка и отладка STM32 по интерфейсу SWD (пины SWCLK и SWDIO) + RST (не обязательно)
  • Необязательный пин SWO для последовательного терминала с внешним STM32 без дополнительных UART-ов и т.д. (Можно выполнять printf/scanf на STM32 с помощью программатора)
  • Прошивка и отладка STM8 по интерфейсу SWIM 
  • Выдача внешнего питания 3.3В от программатора
  • Подключение по mini-usb

stlink2cloneview(1).jpg