ST10 - схеми и програми за speccy

ST10.Urok 2. Как да конфигурирате гнездата и LED примигна (140201-140205)

За да се продължи проучването MK (микроконтролер) STM32xx имаме нужда от документация от производителя.

Разпределението Кайл. по-точно от пакетите за продавача. вече включва почти всичко, което ви трябва.

Referense ръководство на чипа и ядрото. фиш.

те се намират физически. например STM32F100RB

\ STM32F1xx_DFP \ 1.0.2 \ Documents 'Papka_gde_ustanovlena_Keil' \ ARM \ Pack \ Кайл

И най-IDE са организирали работата с документацията, че всичко е под ръка, когато се работи с проекта.

IDE → Преглед на меню -> Книги.

ST10 - схеми и програми за speccy

Въпреки това, STM на документация често се коригира и актуализира.

Документация достъпен на уебсайта на производителя.

>>> - като чип, монтиран на STM32VL откритие

Освен Referense потребителя и фиш. изключително необходимо да се проучи документите -

Errata, съдържащ описание на хардуерни грешки и начини за заобикаляне на тези грешки.

ES0136: STM32F100xC, STM32F100xD и STM32F100xE висока плътност ограничения стойност линия устройства

Препоръчва се също така да имат под ръка тези документи.

>>> - Как да си направим модули

Брайън Kernighan, Денис Ричи. С език за програмиране

Така че всичко, което трябва, което имаме.

Създаване на модул с GPIO.

Съкращение GPIO с общо предназначение на входа / изхода - входа / изхода от общо назначение

Първо, малко за времето.

По подразбиране системата е настроена на външен кристал - HSE (8MHz) и SYSCLK 24MHz.

GPIOx в STM32F10xx с тактова честота от APB2.

В допълнително конфигуриране, както и ще разгледа източник часовник и честотата. но за сега ние използваме тази информация, за даденост.

Времето по подразбиране (а оттам и работи) изключени всички модули периферия.

За свързването им отговорен RCC модул. специално за GPIO х.

APB2 периферна часовник позволи регистър - APB2ENR.

Open Referense ръководство RM0041 и да намерите описание на този регистър, като се използва

списък с отметки, или търсене.

ST10 - схеми и програми за speccy

На STM32VL откритие има два светодиода - син свързан с PC8 и зелени до РС9. Трябва да се контролира бита 8 и 9 на порт С.

Тук аз отделям. Определяне модули себе си и своите регистри в бита заглавната част на файла са stm32f10x.h.

Регистри се сля в структурата на базата на функция.

__IO uint32_t CR;

__IO uint32_t CFGR;

__IO uint32_t CIR;

__IO uint32_t APB2RSTR;

__IO uint32_t APB1RSTR;

__IO uint32_t AHBENR;

__IO uint32_t APB2ENR;

__IO uint32_t APB1ENR;

__IO uint32_t BDCR;

__IO uint32_t КСО;

__IO uint32_t AHBRSTR;

__IO uint32_t CFGR2;

#if дефинирано (STM32F10X_LD_VL) || дефинирано (STM32F10X_MD_VL) || дефинирано (STM32F10X_HD_VL)

__IO uint32_t CFGR2;

# endif / * STM32F10X_LD_VL || STM32F10X_MD_VL || STM32F10X_HD_VL * /

бита дефинирани константи характер и са по същество-битови маски:

#define RCC_APB2ENR_AFIOEN ((uint32_t) 0x00000001) / *!

#define RCC_APB2ENR_IOPAEN ((uint32_t) 0x00000004) / *!

#define RCC_APB2ENR_IOPBEN ((uint32_t) 0x00000008) / *!

#define RCC_APB2ENR_IOPCEN ((uint32_t) 0x00000010) / *!

#define RCC_APB2ENR_IOPDEN ((uint32_t) 0x00000020) / *!

#define RCC_APB2ENR_ADC1EN ((uint32_t) 0x00000200) / *!

Герой решителност малко съдържа. и регистър единица, в която се бита и малко име, разделени от долна е.

Себе си като имена модул, регистри, бита - съкращение.

RCC - R ESET и С заключване С ontrol

APB2ENR - APB2P eripheral часовник EN състояние R egister

За да работите с отделни битове на регистри ще използва следната структура.

Reset малко - Var = (

Монтаж - Var | = bitMask;

Така че включете часовник порт С.

RCC-> APB2ENR | = RCC_ APB2ENR_IOPCEN;

Когато променлива се използва като индикатор uetsya е да се регистрирате APB2ENR.

Чрез onfiguratsiya пристанищни щифтове.

RazdelGPIO 7.1 GPIO употреба Referense функционално описание

Чрез onfiguratsiya констатациите, обобщени в малко конфигурация маса Table Table 16. Port

ST10 - схеми и програми за speccy

задача Bit GPIO конфигурация регистър са дадени в описанието

Порт конфигурация регистър висока (GPIOx_CRH) (X = A..G)

От пристанището има 16 игли. и всеки болт има конфигурация с 4-битов, има две конфигурация регистър 32bit - CRL и CRH.

Имаме нужда от CRH, тъй като заключенията PC8 и РС9 са в него.

ST10 - схеми и програми за speccy

За нас желаната опция - Обща цел изход натискане Фул комбинация от битове

Тя трябва да бъде, както следва.

CNFx - 00 - Binary

MODEX - 01 - както в този случай, скоростта на изход не е от значение. излагайте средно.

Ние ще се инсталира необходимата конфигурация на предварително клиринг усилие

предишно състояние. Въпреки че тези регистри и има определено състояние след нулиране чип. но по-добре е да свикнеш да се направи както трябва. конфигурационни терминали

Понякога е необходимо да промените "в движение".

(GPIO_CRH_CNF9 | GPIO_CRH_CNF8 | GPIO_CRH_MODE9 | GPIO_CRH_MODE8);

GPIOC-> CRH | = GPIO_CRH_MODE9_0 | GPIO_CRH_MODE8_0;

Работа с констатациите.

ST10 - схеми и програми за speccy

За изходни данни порт съществува в ОРС регистъра.

Има редица начини.

Директен написването на стойност в регистър ОРС

GPIOC-> ОРС | = GPIO_ODR_ODR9; // нулиране на изхода

Но това не е атомна, и в допълнение се съставя в един куп инструкции.

и BRR регистрира BSRR предназначени за атомна достъп до бита ОРС порт

Първият нулиране и настройката бита. на второ място след нулиране.

ST10 - схеми и програми за speccy

BSRR регистър символично разделена на две 16-битови. Младши служи за определяне на бит за старши нулиране.

GPIOC-> BSRR = GPIO_BSRR_BR9; // нулиране на изхода

GPIOC-> BSRR = GPIO_BSRR_BS9; // избран изход

За опростяване на писането на кода и за по-удобно възприятие, напиши

определение zameschayushie тези редове.

# определят GreenLED_OFFGPIOC-> BSRR = GPIO_BSRR_BR9

# определят GreenLED_ON GPIOC-> BSRR = GPIO_BSRR_BS9

# определят BlueLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR8

# определят BlueLED_ON GPIOC-> BSRR = GPIO_BSRR_BS8

В резултат на това, работата с продукцията се свежда до:

И това не трябва да се погледне през изходния код, в търсене на това, което е на изхода.

За да стане самостоятелно документиране на код.

Но ако ние нека да контролират светодиодите. Не видяхме нищо.

Заключения се включват при висока скорост и човешкото око не може да хване състоянието на трептенето. Търсите закъснение.

Няма да описвам функцията работа ме е карала напълно. Мога само да кажа, че тя работи в прекъсването на таймер SYSTICK система и ви позволява да създадете времеви интервали, 1 мс. и достатъчно точна. Напълно анализира работните функции в бъдещите уроци.

Събиране на източника Проект → Възстанови всички цели, както в предишния урок.

И аз питам в Flash → Изтегли чип.

Ако компилирането е била успешна и проектът е създаден. на борда ще започне да мига светодиода.

Осъществяване на самия модул.

Нашата код работи. начетен и лесен за използване. Но ако продължим да пиша повече в този стил (всички в един файл).

Това ще отнеме време. завъртане на работа в една рутинна. Трансфер на работата на периферията на модула. и въвеждане на изходни портове на същите периферни устройства,

отделен софтуерен модул - по същество една библиотека.

Предполага се, че вече сте прочели статията Виктор Тимофеев - Как да си направим модулите.

Създаване на led.h модул файл с глава и го запишете в папката вкл. просто създаде източник

led.c и го запишете в папката SRC.

Трансфер на изхода да се определят преминаването заглавни файлове. и заключения инициализация портов суич и функция отделен часовник LED_init () в изходния код.

Свържете заглавни файлове в изходния код Стартиране и се добавят към проекта. както прибавя Стартиране

но само в виртуална КРБ с папки.

С leduyuschie уроци активно ще използва материал от този урок.

Стартиране първи вариант

# определят GreenLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR9

# определят GreenLED_ON GPIOC-> BSRR = GPIO_BSRR_BS9

# определят BlueLED_OFF GPIOC-> BSRR = GPIO_BSRR_BR8

# определят BlueLED_ON GPIOC-> BSRR = GPIO_BSRR_BS8

статичен летливи uint32_t TimingDelay;