Микроконтроллеры stm8 «с нуля»

3.3 Работа с документацией

stm32f0xx.hcmsis_boot

3.3.1 Выбор источника тактирования

datasheetPower managementClocks and startupпо умолчанию после сброса МК в качестве основного источника тактирования выбирается внутренняя 8-ми МГц RC-цепочкаD1D2D == diodeR7D1J2PA4PA4APA4Block diagramDescriptionPA <=> GPIO port A <=> AHB decoder <=> Bus matrix <=> Cortex-M0АAHBABCDFAHBAHBHCLKHPRESYSCLKSWSWSYSCLK

  1. HSI — сигнал с внутреннего высокочастотного генератора, его выдаёт 8 МГц кварцевый резонатор, который я впаивал перед работой с этой платой;
  2. PLLCLK — сигнал с множителя частоты PLLMUL;
  3. HSE — сигнал с внешнего высокочастотного генератора.

HSIReference manual7 Reset and clock control (RCC)7.2.6 System clock selectionHSIHSI7.4 RCC registersClock control register (RCC_CR)HSION1RCC_CRstm32f0xx.hRCC#define RCCRCC_BASE0x40021000defineReference manual2.2.2 Memory map and register boundary adresses5 Memory mappingAHBCRRCCHSI

3.3.2 Настройка ножек

GPIOGPIOAHB7.4 RCC registers7.4.6 AHB peripheral clock enable registerRCC_AHBENRAHBPA4A

#definestm32f0xx.h

APA4выход8 General-purpose I/Os (GPIO)GPIOx_MODERGPIOx_OTYPERGPIOx_OSPEEDRGPIOx_PUPDRGPIOx_IDRGPIOx_ODRу каждого GPIO порта есть 4 настроечных регистра и 2 регистра данныхAPA418.4 GPIO registers

  1. режим порта — выход. В соответствии с документацией необходимо записать 01 в соответствующую область (MODER4) соответствующего регистра (GPIOA_MODER), т.е. биты 9 и 8: в 9-ом бите должен оказаться ноль, в 8-ом единица:

  2. тип выхода. Честно говоря, я до сих пор до конца не разобрался в схемотехнике этого дела (буду разбираться, ещё раз перечитывать форумы и проч.), но изучение других ресурсов по теме конфигурации выхода МК, а также логика и интуиция подсказывают, что здесь должен быть push-pull и далее должен быть pull-up. Во всяком случае код написан, всё работает и ничего не сгорело. Есть реальный риск сжечь, если выбрать тип open-drain и закоротить этот вывод с другим устройством, т.к. это открытый выход и он ничем не защищён. К тому же у нас имеется токоограничительный резистор перед диодом — тут уж точно не сгорит.
    Следуя документации, необходимо записать ноль в 4-ый бит; также в документации указано, что после сброса здесь будет ноль.

  3. скорость вывода. В нашем случае не играет значения, но для верности запишу сюда ноль.

  4. подтяжка. Т.к. вывод будет питать светодиод, необходимо подтянуть к питанию, т.е. pull-up.
    Нужно подтянуть 4-ый вывод порта A; документация говорит, что для этого необходимо записать в 9 и 8 биты ноль и единицу соответственно.

3.3.3 Включение-выключение светодиода и задержка

IDRODRвходнымивыходнымиODRABCDFPA4

если включена оптимизация компиляторакомпилятор вырежетCompileCompile Control String-O0-O0-O1 -O2 -O3

t

stm32f0xx.h

true oldschool

Поехали!!!

 В директории для удобства, где установлен IAR создаем паку для проекта, название произвольное у меня project.

 Распаковываем, ранее скаченный с stm.com архив en.stsw-stm8069.zip(STM8S/A Standard peripherals library), копируем в наш проект C:/Program Files/IAR Systems/project папку en.stsw-stm8069/STM8S_StdPeriph_Lib/Libraries/STM8S_StdPeriph_Driver, с содержимом, два файла Release_Notes.html и stm8s-a_stdperiph_drivers_um.chm можно удалить.

 Копируем из папки en.stsw-stm8069STM/8S_StdPeriph_Lib/Project/STM8S_StdPeriph_Template распакованного архива три файла stm8s_conf.h, stm8s_it.c, stm8s_it.h в наш проект папку C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Lib должно получится вот так.

 С файлами закончили, можно приступать к созданию проекта. Запускаем IAR заходим в Project->Greate New Project, появится это.

 Выбираем С так как мы хотим творить на СИ, жмем ОК. Далее нам предложат придумать и сохранить наш проект, назовём его ‘test’. Сохраняем конечно в нашу папку C:/Program Files/IAR Systems/project.

 Настраиваем IAR. Жмем правой кнопкой на test-Debug->Options->General Options в Device выбираем наш контролер stm8s903k3, жмем ОК.

Продолжаем, жмем правой кнопкой на test-Debug->Options->General Options->C/C++ Kompiler ->Preprocessor жмем кнопку и прописываем пути к нашим папкам, которые скопировали с en.stsw-stm8069(распакованного архива). Прописать надо к  C:/Program Files/IAR Systems/project,  C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver,  C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/inc,  C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/src.

 Вот результат.

 Ниже в таблице пишем STM8S903.

 Жмем ОК.Жмем правой кнопкой на test-Debug->Options->Debugger выбираем в Driver->ST_LINK. Жмем ОК.

 Жмем правой кнопкой на test-Debug->Options->Add->Add Group вписываем SPL. Жмем ОК. Должна появится под test-Debug папка SPL, жмем на папку выбираем Add->File и добавляем из C:/Program Files/IAR Systems/project/STM8S_StdPeriph_Driver/src все файлы, жмем Открыть. Вот результат.

 Жмем на Download and Debug.

 Получится вот так то, что выскочили ошибки это нормально, компилятор нам сказал, что такой периферии в данном контролере нет.

 Нам надо данную периферию убрать, жмем правой кнопкой на надпись выделенную красной звездочкой Options и в верхнем левом углу в Exclude from bulid ставим галочку, жмем ОК и так со всеми.

 Финал! Пишем простой код, мигаем светодиодом.

 Забыл, мигать будем порт D пин , сохраняем, нажать на ДИСКЕТУ в верхнем левом углу, компилируем и загружаем нашу первую программу(жмем на Download and Debug).Надеюсь, Вы в экстазе!

 ВНИМАНИЕ! Тот код который находится в низу и начинается с #ifdef USE_FULL_ASSERT, должен быть обязателен, без него будет выскакивать ошибка:Error: no definition for «assert_failed» , все это предназначено для отлова ошибок в SPL и предотвращения зависания, используется для отладки. Если в коде вашей программе есть ошибки то во время работы программы произойдет переход в функцию void assert_failed(uint8_t* file, uint32_t line);.
Все это добавляет дополнительный код и соответственно будет замедлять программу, поэтому если вы не нуждаетесь в этом, то за комментируйте в файле stm8s_conf.h строку #define USE_FULL_ASSERT (1) должно стать //#define USE_FULL_ASSERT (1)

Datasheets

DS7147: Value line, 16 MHz STM8S 8-bit MCU, 8 Kbyte Flash, 128 byte data EEPROM, 10-bit ADC, 3 timers, UART, SPI, IВІC

PDF, 1.5 Мб

Выписка из документа

STM8S003F3 STM8S003K3Value line, 16 MHz STM8S 8-bit MCU, 8 Kbyte Flash, 128 byte dataEEPROM, 10-bit ADC, 3 timers, UART, SPI, IВІCDatasheet -production data FeaturesCore 16 MHz advanced STM8 core with Harvardarchitecture and 3-stage pipeline LQFP327x7 mm Extended instruction set TSSOP206.5×6.4 mm UFQFPN203x3 mm Timers Memories Program memory: 8 Kbyte Flash memory; dataretention 20 years at 55 В°C after 100 cycles RAM: 1 Kbyte Data memory: 128 bytes true data EEPROM;endurance up to 100 k write/erase cycles Clock, reset and supply management Advanced control timer: 16-bit, 4 CAPCOMchannels, 3 complementary outputs, dead-timeinsertion and flexible synchronization 16-bit general purpose timer, with 3 CAPCOMchannels (IC, OC or PWM) 8-bit basic timer with 8-bit prescaler Auto wakeup timer Window and independent watchdog timers 2.95 V to 5.5 V operating voltage Flexible clock control, 4 master clock sources– Low-power crystal resonator oscillator– External clock input– Internal, user-trimmable 16 MHz RC– Internal low-power 128 kHz RC Clock security system with clock monitor Power management– Low-power modes (wait, active-halt, halt)– Switch-off peripheral clocks individually– Permanently active, low-consumptionpower-on and power-down reset Communications interfaces UART with clock output for synchronousoperation, SmartCard, IrDA, LIN master mode SPI interface up to 8 Mbit/s I2C interface up to 400 Kbit/s Analog to digital converter (ADC) 10-bit ADC, В± 1 LSB ADC with up to 5 …

2.2 Настройка утилиты

интерфейс (у меня это COM-3);
скорость, с которой будет общаться компьютер и микроконтроллер (имхо, 9600 нормальное значение);
количество бит данных (у меня это окно почему-то недоступно, но пока это не важно);
чётность (у меня без чётности, т.е. None);
echo (у меня ВЫКЛ);
время ожидания (у меня 10 секунд).

Во-первых, нужно проверить не замкнута ли перемычка BOOT на плате.
Во-вторых, в любом случае, отключить питание микроконтроллера и желательно линии TX и RX, идущие от переходника на плату (землю можно не отключать).
В-третьих, в программе прожать Back до конца, т.е. до первой странички, или же вообще закрыть её и запустить заново (вообще говоря, она иногда подвисает)

Важно перед каждым подключением к плате через эту программу всегда начинать с первой страницы.
В-четвёртых, подцепить обратно провода от переходника к плате и снова попытаться подключиться в программе (обязательно с первой странички!).

NRSTDatasheetOrdering information

  1. стереть память (всю или выбрать конкретную область);
  2. записать прошивку на устройство;
  3. считать прошивку с устройства;
  4. включить/отключить защиту от записи или чтения.

STM8S IAR настройка для использования SPL (Standard Peripheral Library), и загрузка в контролер stm8s903k3t6 первой программы.

Как сказал Гагарин «Поехали!».
 С чего начать?
 Первым делом приобретите отладочную плату.Если у Вас нет опыта, в электротехнике то рекомендую приобрести stm8 discovery.
  Почему discovery:
        а. Программатор-отладчик;
        б. Имеется согласователь уровней;
        в. Защита программатора, если спалите контролер;
        г. Удобство;
 Что отсутствует кроме программатор-отладчика, в типа таких программаторов как этот. Где взять IAR Embedded Workbench ?
          1. С официального сайта, платная;
          2. С официального сайта-бесплатная (с ограничениями);
          3. В помощь сайты созвучные с богом Грома;
  Если вы приобрели программатор-отладчик, добыли и установили IAR и скачали с сайта stm.com SPL (STM8S/A Standard peripherals library) или тут stm8s_SPL, тогда не будем, как говорится мяться на месте!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector