32-bitni mikrokontroleri i primena - ms1bmp 4 . deo
DESCRIPTION
32-bitni mikrokontroleri i primena - MS1BMP 4 . deo. 2013 Nenad Jovičić. Razvojni sistem STM32VLDISCOVERY. Programiranje i debagovanje. Kratkosponicima na konektoru CN3 se određuje da li je ST-link povezan na ovu pločicu ili neki posljašnji mikrokontroler. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/1.jpg)
32-bitni mikrokontroleri i primena - MS1BMP
4. deo2013
Nenad Jovičić
![Page 2: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/2.jpg)
Razvojni sistem STM32VLDISCOVERY
![Page 3: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/3.jpg)
Programiranje i debagovanjeKratkosponicima
na konektoru CN3 se određuje da li je ST-link povezan na ovu pločicu ili neki posljašnji mikrokontroler.
Više podataka o razvojnom sistemu se može naći u dokumentu UM0919.
![Page 4: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/4.jpg)
Memorija i butovanje programaNeposredno pre
reseta na osnovu stanja na pinovima BOOT1 i BOOT2 određuje se zona iz koje se startuje izvršavanje programa.
![Page 5: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/5.jpg)
CMSIS - Cortex Microcontroller Software Interface StandardRazvijen u težnji da se standardizuje pristup
hervderskim resursima Cortex mikrokontrolera i obezbedi portabilnost softvera među različitim proizvođačima.
CMSIS omogućava razvoj ponovo iskoristljivih (reusable) komponenti softvera za sisteme bazirane na ARM Cortex-M.
Sistemi bazirani na ARM Cortex-M tehnologiji imaju veliki broj zajedničkih komponenti hardvera pa i Hardware Abstraction Layer (HAL) može biti veoma sličan.
![Page 6: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/6.jpg)
CMSIS - komponente Core Peripheral Access Layer
Ova CMSIS komponenta definiše adrese i metode pristupa zajedničkim komponentama i funkcionalnostima (osnovni registri, NVIC, debug podsistem, posebnim registrima) koje se nalaze na svakom Cortex-M sistemu. Ovu komponentu obezbeđuje ARM.
Middleware Access Layer Ova komponenta definiše set zajedničkih API funkcija za pristup periferijama.
Ovaj sloj je definisan od strane ARM i prilagođen od strane proizvođača prema specifičnostima.
Device Peripheral Access Layer Ovaj sloj definiše adrese registara
kao i specifične pristupne funkcije. CMSIS podržavaju C-kompajleri:
ARM RealView (armcc) IAR EWARM (iccarm) GNU Copmiler Collection (gcc)
U novije vreme deo CMSIS-a je postao i DSP middleware
![Page 7: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/7.jpg)
Prvi projekat U okviru workspace-a MS1BMP2013.eww nalazi se projekat GPIO.pew. U glavnom programu se u beskonačnoj petlji neizmenično uključuju i isključuju diode
LED3 i LED4 sa čekanjem implementiranim korišćenjem dummy petlje.
void Delay(__IO uint32_t nCount){ for(; nCount != 0; nCount--);}
while (1) { /* Turn on LD3 and LD4 */ STM32vldiscovery_LEDOn(LED3); STM32vldiscovery_LEDOn(LED4); /* Insert delay */ Delay(0xAFFFF); /* Turn off LD3 and LD4 */ STM32vldiscovery_LEDOff(LED3); STM32vldiscovery_LEDOff(LED4); /* Insert delay */ Delay(0xAFFFF); }
![Page 8: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/8.jpg)
CMSIS Struktura projekta
Osnovni konfiguracioni heder fajl za odabranu familiju mikrokontrolera
Low-level & API funkcije koje čine biblioteku periferijskih drajvera.
NVIC i SysTick drivers
Peripheral header file Ovaj fajl prilagodjava korisnik
Cortex-M3 prekidi i izuzetci
![Page 9: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/9.jpg)
CMSIS - fajlovi Fajlovi koje definiše isključivo ARM: core_cm3.c - Core Peripheral Access Layer Source File
Ovaj fajl sadži implementaciju CMSIS intrinsic funkcija koje su
za razliku od intrinsic funkcija u oviru C kompajlera nezavisne od vrste kompajlera
core_cm3.h - Core Peripheral Access Layer Header File Ovaj fajl sadrži definicije registara periferija jezgra i funkcije za
pristup tim registrima, kao i deklaraciju intrinsic funkcija CMSIS layer Device Peripheral Access Layer čine sledeći
fajlovi: system_stm32f10x.c - Device Peripheral Access Layer Source File
Ovaj fajl sadži definiciju funkcije SystemInit koja vrši inicijalizaciju dela mikrokontrolera zaduženog za generisanje klok signala i koja se poziva u okviru startup koda
system_stm32f10x.h - Device Peripheral Access Layer Header File Ovaj fajl sadži deklaraciju funkcije SystemInit
stm32f10x.h - Device Peripheral Access Layer Header File Ovaj fajl sadrži definiciju registara periferija mikrokontrolera
kao i definiciju bitova u okviru svakog definisanog registra, bazne adrese registara i numeraciju vektora prekida
![Page 10: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/10.jpg)
CMSIS - fajlovi stm32f10x_conf.h - Device Peripheral Access Layer
Configuration Header File Ovaj fajl sadrži kontroliše korišćenje periferijskih biblioteka
koje definiše isključivo proizvođač mikrokontrolera. misc.h , misc.c
Ovi fajlovi definišu specifičnosti kontrole prekida, sistemskog takta i reset-a. Formu propisuje ARM, ali ga neznatno redefiniše svaki proizvođač.
stm32f10x_PPP.x Ovi fajlovi pšredstavljaju drajvere za odgovarajuće periferije i
razlikuju se od proizvođača do proizvođača.
Specifičnosti različitih razvojnih okruženja se definišu sledećim fajlom:
startup_stm32f10x_md_vl.s - STM32F10x Medium Density Value Line Devices vector table
Ovaj fajl sadrži vektor tabelu i Reset_Handler ISR u kojoj se vrši setovanje SP, inicijalizacija dela mikrokontrolera zaduženog za generisanje klok signala i pozicioniranje PC na labelu __iar_program_start gde se nalazi kod za inicijalizaciju promenljivih, nakon čega se poziva main funkcija
Napomena: Ovaj fajl se po pravilu razlikuje od okruženja do okruženja!
![Page 11: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/11.jpg)
Fajlovi koje menja korisnik
stm32f10x_It.h/* Exported functions
----------------------------------------------- */void NMI_Handler(void);void HardFault_Handler(void);…
stm32f10x_It.c#include "stm32f10x_it.h"
…void EXTI1_IRQHandler(void){GPIO_WriteBit(GPIOD, GPIO_Pin_1, Bit_SET);}
main_X.c#include "stm32f10x.h“int main(void){...GPIO_WriteBit(GPIOD, GPIO_Pin_1, Bit_SET);…}
stm32f10x_conf.h/* Includes
------------------------------------------------------------------*//* Uncomment the line below to enable peripheral header
file inclusion *//* #include "stm32f10x_adc.h" *//* #include "stm32f10x_bkp.h" */#include "stm32f10x_gpio.h" ……
![Page 12: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/12.jpg)
Korišćenje CMSIS-aPočev od verzije IAR
6.20 CMSIS Core je sastavni deo kompjalera i uključuje se kroz opcije projekta.
Iz tog razloga unutar projektnog direktnorijuma nema fajlova core_3m.c i core_3m.h.
Na sličan način vrši se i kontrola korišćenja DSP biblioteka.
![Page 13: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/13.jpg)
Opcije projekta
Konretan mikrokontroler se definiše preko globalnog simbola što utiče na deklaracije u glavnom heder fajlu
![Page 14: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/14.jpg)
Opcije projekta
Korišćenje periferijskih biblioteka se kontroliše globalnim simbolom koji povezuje konfiguracione heder fajl.
![Page 15: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/15.jpg)
Periferijske biblioteke
U konfiguracionom fajlu se uključuju biblioteke vendor-specific periferija koje obezbeđuje proizvođač mikrokontrolera.U tim hederima se nalaze deklaracije registara, ali i prototipovi specifičnih funkcija za pristup toj periferiji.
Korišćenje funkcija zahteva uključivanje i odgovarajućih source fajlova u projekat!
![Page 16: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/16.jpg)
Provera parametara inicijalizacije
Parametri funkcije su logički izrazi definisani obično u heder fajlovima odgovarajuće periferijske biblioteke
Poželjno je obezbediti kontrolu inicijalizacije periferija i proizvođači to čine preko funkcija za proveru parametara assert_param()
![Page 17: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/17.jpg)
Kontrola provere parametaraFunkcije i logički uslovi za proveru parametara su deo proizvođačkih biblioteka i kao takvi se ne menjaju, a globalna kontrola provere se vrši definisanjem globalnog simbola USE_FULL_ASSERT
Na kraju korisnik ima mogućnost da u definiše sopstvenu funkciju koja se poziva u slučaju da neki parametar nije prošao runtime proveru.
![Page 18: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/18.jpg)
Generisanje taktaSistemski takt:
Klok HSI oscillatora Klok HSE oscillatora Klok PLL - a
Dodatni taktovi:
40kHz low speed interni RC oscilator koji se može koristiti za WDT ili RTC
32.768Khz low speed eksterni kristal koji se može koristitii za RTC
![Page 19: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/19.jpg)
SystemInit() funkcija
Kroz SystemInit() funkciju proizvođač obezbeđuje jednostavnu konfiguraciju takta.
![Page 20: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/20.jpg)
Inicijalizacija periferija1) Pre konfigurisanja bilo koje periferije potrebno je dovesti joj takt
korišćenjem odgovarajuće funkcije iz CMSIS biblioteke: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_PPPx , ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_PPPx , ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PPPx , ENABLE);
2) PPP_DeInit(..) Funkcije se mogu koristiti da se resursi bilo koje periferije postave u inicijalna stanja:
PPP_DeInit(PPPx);3) Inicijalizacija periferija se uvek izvodi korišćenjem struktura
karakterističnih za te periferije: PPP_InitStucture.memberX = valX; PPP_InitStructure.memberY = valY; PPP_Init(PPPx, &PPP_InitStructure);
4) Nakon osnovne inicijalizacije neke periferije se dalje konfigurišu zadavajući odgovarajuće komande kroz funkcije koje su u sledećem formatu:PPP_Cmd(..) function: PPP_Cmd(PPPx, ENABLE); Ovo se na primer koristi za komunikacione periferije kao što su UART, SPI, I2C ...
![Page 21: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/21.jpg)
Magistrale Poznavanje rasporeda periferija po magistralama je bitno zbog njihove
konfiguracije.
![Page 22: 32-bitni mikrokontroleri i primena - MS1BMP 4 . deo](https://reader036.vdocuments.mx/reader036/viewer/2022081418/56816593550346895dd8615b/html5/thumbnails/22.jpg)
Pirmer InicijalizacijePrimer konfiguracije UART1-a:
/* Enable USART1 Clock */ RCC_APB2PeriphClockCmd( USART1, ENABLE );
/* set all UART1’s peripheral registers to their reset values */USART_DeInit( USART1 ) ;
/* USART1 configuration ------------------------------------------------------*/ /* USART1 configured as follow: - BaudRate = 19200 baud - Word Length = 8 Bits - One Stop Bit - Even parity - Hardware flow control disabled (RTS and CTS signals) - Receive and transmit enabled */ USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_Even; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /* Configure USART1 */ USART_Init( USART1, &USART_InitStructure); /* Enable USART1 */ USART_Cmd( USART1, ENABLE );