Знайомство з Cortex

переривань
Основою STM32 є процесор Cortex-M3. Він є стандартизованим мікроконтролером, що інтегрує 32-бітове ЦПУ, шинну структуру, блок вкладених переривань, налагоджувальну систему і зумовлену організацію пам'яті.

Ще одним ключовим компонентом ядра Cortex-M3 є контролер векторизованих вкладених переривань (КВВП). КВВП надає стандартну структуру переривань для всіх Cortex-мікроконтролерів та способи їх обробки.

КВВП наказує вектори переривань для 240 джерел, для кожного з яких може бути встановлений свій пріоритет. Під час розробки КВВП особлива увага приділялася швидкодії обробки переривань. З моменту отримання запиту на переривання до виконання першої команди процедури обробки переривання проходить лише 12 циклів. Частково це досягнуто за рахунок автоматичних операцій зі стеком, що виконується спеціальним мікрокодом усередині ЦПУ. Якщо ж переривання виникають практично одночасно, то КВВП використовує спосіб упорядкованої обробки переривань із затримкою перед викликом чергової процедури обробки переривання лише 6 циклів. У разі накладання переривань, переривання з вищим пріоритетом може витіснити нижчий пріоритетне переривання, не витрачаючи при цьому додаткових циклів ЦПУ. Структура переривань також тісно пов'язана з економічними режимами роботи, що підтримуються ядром Cortex-M3. Передбачена можливість конфігурації ЦПУ на автоматичний перехід до економічного режиму роботи після завершення обробки переривання. Після цього переходу ядро ​​не діятиме аж до виникнення чергової виняткової ситуації.

Незважаючи на те, що ядро ​​Cortex-M3 розроблялося як недороге ядро, воно залишається 32-бітовим ЦПУ і у зв'язку зцим, підтримує два режими роботи: потоковий режим (Thread) і режим обробника (Handler), кожному з яких можна сконфігурувати свої власні стеки. Завдяки цьому з'являється можливість розробки більш інтелектуального програмного забезпечення та підтримки операційних систем реального часу (ОСРВ). У ядро ​​Cortex також входить 24-бітовий таймер, що автоматично перезавантажується, призначений для генерації періодичних переривань і використовуваний ядром ОСРВ. Якщо ЦПУ ARM7 і ARM9 має два набори інструкцій (32-бітний ARM і 16-бітовий Thumb), то у сімейства Cortex передбачена підтримка набору інструкцій ARM Thumb-2. Він є сумішшю 16- і 32-бітних інструкцій, що дозволяють досягти продуктивності 32-бітного набору інструкцій ARM і щільності коду, властивої 16-бітному набору інструкцій Thumb. Thumb-2 - великий набір інструкцій, орієнтований компілятори мов C/C++. Це означає, що програма для Cortex-мікроконтролера може бути написана повністю на Сі.