Darbs ar LCD indikatoru STM32L-Discovery izstrādes panelī. Apmācība STM32 masām Frekvences dalītāju bloks

Galvenā informācija

STM32L-Discovery izstrādes platei ir šķidro kristālu displejs (LCD) ar sešām 14 segmentu rakstzīmēm, 4 koliem (colon), 4 punktiem (DP), 4 svītrām (josla). Visi segmenti ir apvienoti grupās COM0, COM1, COM2, COM3 no 24 segmentiem. Katrai grupai ir savs atsevišķs “kopējais vads”.


Mikrokontrolleris STM32L152RBT6 ir uzstādīts uz atkļūdošanas plates. Mikrokontrolleram ir iebūvēts LCD kontrolleris, kas kontrolē vienkrāsainos LCD indikatorus.
LCD kontrolieris:

  1. Ļauj konfigurēt atjaunināšanas biežumu (kadru nomaiņas ātrums — biežums, ar kādu tiek atjaunināta informācija LCD ekrānā)
  2. Atbalsta statisko un multipleksu vadības režīmu
  3. Atbalsta programmatūras instalēšana kontrastu
  4. Ļauj vairākus vadības sprieguma līmeņus (līdz četriem)
  5. Izmanto dubulto buferizāciju, ļaujot LCD_RAM ​​reģistros esošos datus atjaunināt jebkurā laikā programmas izpildes laikā, nepārkāpjot parādītās informācijas integritāti

LCD kontrollera atmiņas reģistri

Mikrokontrolleram STM32L152RB ir speciāli LCD_RAM ​​reģistri, kuros glabātā informācija atbilst segmentu grupai COM0 - COM3. Katra grupa atbilst diviem 32 bitu reģistriem. Šis reģistru skaits ļauj mikrokontrollerim kontrolēt LCD c liela summa segmenti nekā tie, kas uzstādīti izstrādes panelī.

Lai vadītu LCD ar 176 segmentiem, tiek izmantotas 4 grupas COM0 - COM3 no 44 segmentiem katrā; lai kontrolētu LCD ar 320 segmentiem, tiek izmantotas 8 grupas COM0 - COM7 no 40 segmentiem katrā.



STM32L-Discovery izstrādes plate izmanto LCD ar 96 segmentiem, kas sadalīti 4 grupās COM0 - COM3 pa 24 segmentiem katrā.


STM32L-Discovery izstrādes plates LCD ir savienots tā, ka tiek izmantoti katras grupas otrā LCD_RAM ​​reģistra biti S40, S41 un pirmo LCD_RAM ​​reģistru biti S0-S27. Lai samazinātu izmantoto reģistru skaitu, informācija no bitiem S40-S43 tiks ierakstīta brīvajos bitos S28-S31, izmantojot pārkartošanas funkciju.

Frekvences dalītāja bloks

Frekvences dalītāja bloks (Frekvenču ģenerators) ļauj sasniegt dažādus kadru ātrumus LCD ekrānā diapazonā no 32 kHz līdz 1 MHz. Kā laika signāla avotu var izmantot:
  1. Ārējais zemfrekvences ģenerators ar frekvenci 32 kHz (LSE. Zema ātruma ārējais)
  2. Iekšējais zemfrekvences ģenerators ar frekvenci 37 kHz (LSI. Zema ātruma iekšējais)
  3. Ārējais RF ģenerators ar 2,4,8 un 16 frekvences dalītājiem un maksimālo frekvenci 1 MHz. (HSE. Ārējais liels ātrums)
Lai sasniegtu precīzu laiku un samazinātu sprieguma nobīdi līdzstrāva Izmantojot LCD segmentus, laika signāla avotam jābūt stabilam. LCDCLK pulksteņa signāls tiek nosūtīts uz LCD kontrolleri. Pulksteņa signāla frekvence tiek sadalīta atbilstoši dalīšanas koeficientiem, ko nosaka LCD_FCR (Frame Control Register) reģistra PS, DIV biti. Iegūto frekvenci pie frekvences dalītāja bloka izejas aprēķina pēc formulas:

F ck_div =F LCDCLK / (2 PS * (16+DIV))

Kadru ātrumu aprēķina pēc formulas:

F Frame =f ck_div *pienākums

Kur pienākums ir darba cikls - impulsa ilguma attiecība pret tā periodu. Viena kadra laikā LCD ekrānā secīgi tiek parādīta informācija no reģistriem LCD_RAM[x], LCD_RAM ​​utt. Uz izstrādes plates uzstādītam LCD, vienā kadrā LCD kontrollerim ir jāizvada informācija no 4 segmentu grupām COM0 - COM3, līdz ar to vadības impulsa ilgums vienai grupai būs 1/4 no kadra ilguma, t.i. pienākums=1/4.

LCD vadība

Ir divi veidi, kā vadīt LCD - statiskā vadības režīms un multiplekss vadības režīms. Ar statisku indikāciju katrs indikatora bita segments ir savienots ar mikrokontrollera izeju. Saistībā ar LCD, atkļūdošanas panelī STM32LDiscovery ir nepieciešami 6 * 14 = 84 mikrokontrollera tapas (izņemot kolus, punktus un svītras). Tā kā tiek izmantots šāds tapu skaits, citu perifērijas ierīču savienošana kļūs neiespējama. Mikrokontrolleram STM32L152RB ir 64 kontakti. Multipleksa vadības režīmā (dinamiskās vadības režīmā) identiski indikatoru ciparu segmenti tiek apvienoti grupās. Informācija tiek parādīta indikatora ciparu segmentu alternatīvā apgaismojuma dēļ ar frekvenci, kas nav uztverama cilvēka acij.

Multipleksa vadība ļauj kontrolēt lielu skaitu segmentu. Tā vietā, lai atsevišķi kontrolētu katru elementu, tos var risināt ar rindām un kolonnām (COM un SEG), tādējādi vienkāršojot vadības ķēdi, jo katram segmentam nav nepieciešama sava vadības līnija. Lai ieslēgtu izvēlēto segmentu, tam jāpiemēro potenciālu starpība COM un SEG. Indikatora pirmā cipara darbības piemērs (indikators rāda “1:”):


Indikatora pirmais cipars brīdī t 0


Indikatora pirmais cipars brīdī t 1


Indikatora pirmais cipars brīdī t 2


Vispārīga diagramma segmentu savienošanai ar LCD tapām


LCD tapu savienojuma shēma ar mikrokontrollera portiem

SEG līnijām tiek izmantots vadības spriegums, kura līmeņu skaitu nosaka nobīdes koeficients. Izstrādes plates LCD izmanto multipleksa vadības režīmu ar duty=1/4 un bias=1/3. Darba un novirzes vērtības tiek iestatītas, izmantojot LCD_CR (kontroles reģistru) reģistru DUTY un BIAS bitos.

Prakse

Mikrokontrollera portu konfigurēšana

Lai vadītu LCD, mikrokontrollera porti ir attiecīgi jākonfigurē:
  1. Uz izeju
  2. Funkcijas AF 11 Alternate izmantošana
  3. Pieslēgt izejas frekvenci 400 kHz portam
  4. Izmantojiet push-pull darbības režīmu
  5. Nav pievilkšanas rezistoru
Kad ports darbojas alternatīvās funkcijas režīmā, porta izejas datu buferis tiek kontrolēts ar signāliem, kas nāk no perifērijas. CMSIS bibliotēkas galvenes fails stm32lxx.h satur visu perifērijas reģistru aprakstu, kā arī to piekļuves struktūru.

LCD tapas ir savienotas ar mikrokontrollera GPIOA (PA1-PA3, PA8-PA10, PA15), GPIOB (PB3-PB5, PB8-PB15), GPIOC (PC0-PC3, PC6-PC11) portiem. Lai LCD darbotos, atlasītajos portos ir jāpiegādā pulksteņa signāls. Mikrokontrollera GPIO pieslēgvietas tiek noteiktas no RCC (Reset and Clock Control) sistēmas AHB kopnes - pulksteņa un atiestatīšanas sistēmas. Pulksteņa signāls tiek piegādāts, iestatot atbilstošos bitus reģistrā RCC_AHBENR (AHB perifērijas pulksteņa iespējošana reģistrā).

Reģistrējieties RCC_AHBENR (attēlā parādīti pirmie 15 biti)

GPIOA, GPIOB, GPIOC portiem ir jāiestata 1 līdz 0, 1, 2 reģistra biti.

Tālāk es norādīšu kodu informācijas ierakstīšanai reģistrā, izmantojot bitmasku un heksadecimālos kodus. Bitmasku izmantošana ir ērtāka, taču darbs ar heksadecimālajiem kodiem ļauj izprast darba ar reģistriem būtību.

RCC->AHBENR |=(RCC_AHBENR_GPIOAEN|RCC_AHBENR_GPIOBEN|RCC_AHBENR_GPIOCEN); vai RCC->AHBENR = 0x7; /* 0x7=111 */

Lai norādītu porta darbības režīmus, tiek izmantots reģistrs GPIOx_MODER (GPIO port mode register) (x = A..H). Visi reģistra biti ir sagrupēti MODERy grupās, kur y ir atbilstošā porta pin numurs. Porti ir jākonfigurē alternatīvu funkciju režīmam, t.i. grupā, kas ir atbildīga par tapu, iestatiet vērtību uz 10. GPIOA portam ir jākonfigurē tapas 1-3,8-10,15, tas ir, jāiestata 1 uz 3,5,7,17,19, 21,31 cipars.


Reģistrēt GPIOx_MODER (GPIO porta režīma reģistrs)

GPIOA->MODER |= (GPIO_MODER_MODER1_1 | GPIO_MODER_MODER2_1 | GPIO_MODER_MODER3_1 | GPIO_MODER_MODER8_1 | GPIO_MODER_MODER9_1 | GPIO_MODER_MODER10_1 | GPIO_MODER_MODER15_1_MODER); vai GPIOA->MODER = 0x802A00A8; /* 0x802A00A8=1000 0000 0010 1010 0000 0000 1010 1000 */
Mikrokontrollera porti ir jāpārslēdz uz push-pull režīmu. Lai to izdarītu, GPIOx_OTYPER reģistrā (GPIO porta izvades tipa reģistrā) ir jāiestata 1 bitos, kas ir atbildīgi par tapām.


Reģistrs GPIOx_OTYPER (GPIO porta izvades tipa reģistrs)

GPIOA->OTYPER &= ~(GPIO_OTYPER_OT_1 | GPIO_OTYPER_OT_2 | GPIO_OTYPER_OT_3 | GPIO_OTYPER_OT_8 | GPIO_OTYPER_OT_9 | GPIO_OTYPER_OT_10 | GPIO_OTYPER_OT_15); vai GPIOA->OTYPER &= ~0x0000870E; /* 0x870E=1000 0111 0000 1110 */
Abas opcijas ietekmē atlasītās tapas. (GPIOA portam ir konfigurēti tapas 1-3.8-10.15). Ja nepieciešams pārslēgt visas porta tapas uz push-pull režīmu, reģistrā var ierakstīt šādu vērtību:
GPIOA->OTYPER = 0x0;
Lai norādītu informācijas izvadīšanas frekvenci uz portu, tiek izmantots GPIOx_OSPEEDR (GPIO porta izvades ātruma reģistrs) reģistrs. Visi reģistra biti ir sagrupēti grupās OSPEEDRy, kur y ir atbilstošā porta pin numurs. Šajā darbā frekvence jāiestata uz 400 kHz t.i. grupā, kas ir atbildīga par tapu, iestatiet vērtību uz 00.


Reģistrēt GPIOx_OSPEEDR (GPIO porta izvades ātruma reģistrs)

GPIOA->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR1 | GPIO_OSPEEDER_OSPEEDR2 | GPIO_OSPEEDER_OSPEEDR3 | GPIO_OSPEEDER_OSPEEDR8 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER_OSPEEDR9 | GPIO_OSPEEDER1GPEEDER0_PEEDR1); vai GPIOA->OSPEEDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */
Ja portam ir jāiestata izejas frekvence uz 400 kHz visām tapām, varat ierakstīt vērtību reģistrā:
GPIOA->OSPEEDR = 0x0;
Lai atspējotu uzvilkšanas un nolaižamās rezistorus atlasītajām tapām, izmantojiet GPIOx_PUPDR reģistru (GPIO porta pullup/pull-down reģistrs). Visi reģistra biti ir sagrupēti PUPDRy grupās, kur y ir atbilstošā porta pin numurs. Lai atspējotu uzvilkšanas rezistorus grupā, kas ir atbildīga par tapu, iestatiet vērtību uz 00.


Reģistrēt GPIOx_PUPDR (GPIO porta izvilkšanas/novilkšanas reģistrs)

GPIOA->PUPDR &= ~(GPIO_PUPDR_PUPDR1 | GPIO_PUPDR_PUPDR2 | GPIO_PUPDR_PUPDR3 | GPIO_PUPDR_PUPDR8 | GPIO_PUPDR_PUPDR9 | GPIO_PUPDR_PUPDR10 | GPIO_PUPDR_10 | GPIO_PUPDR5); vai GPIOA->PUPDR &= ~0xC03F00FC; /*0xC03F00FC=1100 0000 0011 1111 0000 0000 1111 1100 */
Ja jums ir jāatspējo uzvilkšanas rezistori visām tapām, varat ierakstīt vērtību reģistrā:
GPIOA->PUPDR = 0x0;
Lai izmantotu alternatīvu funkciju mikrokontrollera portiem, divi reģistri GPIOx_AFRL (GPIO alternatīvās funkcijas zemais reģistrs), kas atbild par zemajām tapām (0 līdz 7) un GPIOx_AFRH (GPIO alternatīvās funkcijas augstais reģistrs), kas atbild par augstajiem kontaktiem (8 līdz 15). ), tiek izmantoti. Visi reģistra biti ir sagrupēti grupās ARFRLy un AFRHy, kur y ir atbilstošā porta pin numurs. Porti ir jākonfigurē, lai izmantotu alternatīvo funkciju AF11, šim nolūkam grupai, kas ir atbildīga par tapu, jābūt iestatītai uz 1011.


Reģistrēt GPIOx_AFRL (GPIO alternatīvās funkcijas zems reģistrs)


Reģistrēt GPIOx_AFRH (GPIO alternatīvās funkcijas augstais reģistrs)

Lai to izdarītu, reģistros jāieraksta šādas vērtības:
GPIOA->AFR = 0xBBB0; /* 0xBBB0 = 1011 1011 1011 0000*/ GPIOA->AFR = 0xB0000BBB; /* 0xB0000BBB=1011 0000 0000 0000 0000 1011 1011 1011*/

AFR = 0xBBB0 — ieraksta vērtību GPIOx_AFRL reģistrā.
AFR = 0xB0000BBB — ieraksta vērtību GPIOx_AFRH reģistrā.

GPIOB un GPIOC portu atbilstošo tapu iestatījumi tiek veikti tādā pašā veidā.

LCD kontrollera iestatīšana

Strādājot ar LCD kontrolleri, tāpat kā ar citām perifērijas ierīcēm, tam ir jāpiegādā pulksteņa signāls. Pulksteņa signāls tiek piegādāts arī jaudas pārvaldības sistēmai. Kontrolieris un jaudas pārvaldības sistēma izmanto APB1 kopni pulksteņa noteikšanai. Lai iespējotu pulksteni RCC_APB1ENR (APB1 perifērijas pulksteņa iespējošanas reģistra) reģistrā, 9. un 28. bitā jāiestata 1.


Reģistrēt RCC_APB1ENR (APB1 perifērijas pulksteņa iespējošanas reģistrs)

RCC->APB1ENR |= RCC_APB1ENR_PWREN|RCC_APB1ENR_LCDEN; vai RCC->APB1ENR |= 0x10000200; /* 0x10000200=1 0000 0000 0000 0000 0010 0000 0000 */
Lai LCD kontrolleris darbotos, ir jānorāda pulksteņa signālu avots. Avots ir norādīts RCC_CSR reģistrā. Pēc noklusējuma rakstīšana šajā reģistrā ir atspējota. Ierakstīšanas aizsardzība reģistrā RCC_CSR tiek noņemta no PWR_CR jaudas kontroles reģistrā. RCC_CSR reģistrs kontrolē RTC un LCD kontrollera pulksteņa avotus
Rakstīšana RCC_CSR reģistrā ir iespējota, iestatot PWR_CR reģistra 8. bitu uz 1.


Reģistrēt PWR_CR (PWR jaudas kontroles reģistrs)

PWR->CR |= PWR_CR_DBP; vai PWR->CR |= 0x100; /* 0x100 =1 0000 0000 */
Lai mainītu LCD kontrollera pulksteņa avotu (un arī RTC pulksteni), vispirms ir jāatiestata pulksteņa avots, iestatot RTCRST bitu (iestatījums no 1 līdz 23. bitam) RCC_CSR reģistrā (vadības/statusa reģistrā).


Reģistrēties RCC_CSR (kontroles/statusa reģistrs)

RCC->CSR |= RCC_CSR_RTCRST;
Vai arī ierakstot vērtību reģistrā, izmantojot operatoru “|=”, jo vērtība pēc
noklusējuma reģistrs atšķiras no 0x0:
RCC->CSR |= 0x800000; /* 0x800000 = 1000 0000 0000 0000 0000 0000 */
Lai atlasītu jaunu pulksteņa avotu, jums ir jānoņem RTCRST bits:
RCC->CSR &= ~RCC_CSR_RTCRST; vai RCC->CSR &= ~0x800000;
Kā pulksteņa signāla avots ir izvēlēts ārējs zemfrekvences ģenerators. Lai ieslēgtu ģeneratoru RCC_CSR reģistrā, jāiestata LSEON bits (iestatīts no 1 līdz 8 bitiem):
RCC->CSR |= RCC_CSR_LSEON; vai RCC->CSR |= 0x100; /* 0x100 = 1 0000 0000 */
Pēc ģeneratora ieslēgšanas ir nepieciešams zināms laiks, lai to stabilizētu. Ģeneratora gatavību pārbauda ar LSERDY bita aparatūras iestatījumu RCC_CSR reģistrā:
while(!(RCC->CSR&RCC_CSR_LSERDY));
Ārējā zemfrekvences ģeneratora izvēle kā pulksteņa avots tiek veikta, RTCSEL grupā iestatot RCC_CSR reģistru uz 01:
RCC->CSR |= RCC_CSR_RTCSEL_LSE; vai RCC->CSR |= 0x10000; /* 0x10000 = 01 0000 0000 0000 0000 */
LCD kontrollerī jums jāinstalē vēlamo režīmu aizspriedums. Lai to izdarītu, LCD_CR reģistrā (LCD vadības reģistrā) BIAS grupā jāiestata vērtība 10. Pirms uzgaļu uzstādīšanas ir nepieciešams iztīrīt uzgaļus no “atkritumiem”.


Reģistrēt LCD_CR (LCD vadības reģistrs)

Atiestatīt bitus:
LCD->CR &= ~LCD_CR_BIAS; vai LCD->CR &= ~0x60;
Izvēloties režīmu bias=1/3, izmantojot bitmasku:
LCD->CR |= LCD_CR_BIAS_1; vai LCD->CR |= 0x40;
Iestatiet režīma pienākumu = 1/4. Lai to izdarītu, mēs arī vispirms atiestatām visus bitus:
LCD->CR &=~LCD_CR_DUTY; vai LCD->CR &= ~0x1C;
Iestatiet vērtību 011 LCD_CR reģistra DUTY grupai
režīma pienākums=1/4:
LCD->CR |= LCD_CR_DUTY_0|LCD_CR_DUTY_1; vai LCD->CR |= 0xС;
Mēs aktivizējam tapas maiņas funkciju. Lai to izdarītu, iestatiet no 1 līdz 7 LCD_CR reģistra bitiem:
LCD->CR |= LCD_CR_MUX_SEG; vai LCD->CR |= 0x80;
Mēs iestatījām LCDCLK pulksteņa signāla frekvences dalīšanas koeficientu vērtības. Koeficientu vērtības tiek iestatītas LCD_FCR reģistrā (LCD kadru vadības reģistrā). Pirmkārt, mēs arī notīrām visus bitus, pēc tam iestatām nepieciešamos.


Reģistrēt LCD_FCR (LCD kadru vadības reģistrs)

LCD->FCR &= ~LCD_FCR_PS; LCD->FCR &= ~LCD_FCR_DIV; vai LCD->FCR &= ~0x3C00000; LCD->FCR &= ~0x3C0000;
Pulksteņa signāla frekvences dalīšanas koeficientu vērtības ir iestatītas vienādas ar ck_ps = LCDCLK/16, ck_div = ck_ps/17. Lai to izdarītu, iestatiet no 1 līdz 24 un 18 cipariem:
LCD->FCR |= 0x1040000; /*0x1040000 = 1 0000 0100 0000 0000 0000 0000*/
Lai iestatītu vēlamo kontrasta līmeni, CC grupā jāiestata vērtība 010, arī vispirms notīrot bitus no vecajām vērtībām:
LCD->FCR &= ~LCD_FCR_CC; LCD->FCR |= LCD_FCR_CC_1; vai LCD->FCR &= ~0x1C00; LCD->FCR |= 0x800; /*0x800 = 1000 0000 0000*/
Pēc visu vērtību iestatīšanas ir nepieciešams zināms laiks, lai sinhronizētu LCD_FCR reģistru. Reģistra sinhronizāciju pārbauda, ​​iestatot FCRSF bitu aparatūrā LCD_SR (LCD statusa reģistrs) reģistrā.

Reģistrēt LCD_SR (LCD statusa reģistrs)

While(!(LCD->SR&LCD_SR_FCRSR));
Kā LCD sprieguma avotu mēs izvēlamies iekšēju pastiprinošu pārveidotāju, lai izveidotu V lcd. Lai to izdarītu, LCD_CR reģistra (LCD vadības reģistra) pirmais bits ir iestatīts uz 0:
LCD->CR &= ~LCD_CR_VSEL; vai LCD->CR &= ~0x2;
LCD kontrollera darbība tiek iespējota, iestatot LCD_CR reģistra (LCD vadības reģistra) bitu uz 0:
LCD->CR |= LCD_CR_LCDEN; vai LCD->CR |= 0x1;
Pēc iekšējā paaugstināšanas pārveidotāja kā sprieguma avota uzstādīšanas jums jāgaida, līdz tas ir gatavs. Gatavību pārbauda ar RDY bita aparatūras iestatījumu LCD_SR reģistrā (LCD statusa reģistrā):
while(!(LCD->SR&LCD_SR_RDY));
Pēc tam, kad ir ļauts LCD kontrollerim darboties, jums jāgaida, līdz tas ir gatavs. Gatavību pārbauda ar ENS bita aparatūras iestatījumu LCD_SR reģistrā (LCD statusa reģistrā):
while(!(LCD->SR&LCD_SR_ENS));

Attēla veidošana LCD ekrānā

Visi indikatoru segmenti ir apvienoti grupās COM0 - COM3 ar 24 segmentiem katrā (SEG0-SEG23). Informācija par segmentiem tiek saglabāta LCD kontrollera atmiņas LCD_RAM ​​reģistros. Elektroinstalācija iespiedshēmas plate ir tāds, ka segmentu numuri neatbilst LCD_RAM ​​reģistru bitu numuriem.

Lai LCD ekrāna pirmajā ciparā parādītu 1, jums jāiedegas segmenti 1B, 1C. Segments 1B pieder grupai COM0, segments 1C pieder grupai COM1. Tāpēc informācija par tiem jāieraksta attiecīgi RAM (LCD_RAM0), RAM (LCD_RAM2) reģistros. Segments 1B ir atbildīgs par LCD izvadi LCDSEG22, par kuru informācija tiek glabāta RAM reģistra SEG40 bitā (LCD_RAM1). Izmantojot pārkartēšanas funkciju, segments LCDSEG22 tiks piešķirts RAM reģistra bitam SEG28 (LCD_RAM0). 1C segments ir atbildīgs par LCD izvadi LCDSEG1, par kuru informācija tiek saglabāta RAM reģistra bitā SEG1 (LCD_RAM2).

LCD->RAM = 0x10000000; /*0x10000000 = 1 0000 0000 0000 0000 0000 0000 0000 */ LCD->RAM = 0x2; /*0x2= 10 */
Pirms vērtību ierakstīšanas atmiņas reģistros ir jāpārbauda, ​​vai iepriekšējā datu pārsūtīšana uz LCD ir pabeigta. Lai to izdarītu, tiek pārbaudīts LCD_SR (LCD statusa reģistra) reģistra UDR (Update display request) bits. LCD kontrollerim ir divi izejas buferi, informācija tiek ievadīta pirmajā buferī un izvadīta uz LCD no otrā bufera. UDR bits tiek iestatīts pārsūtīšanas laikā no pirmā bufera uz otro, aizsargājot LCD_RAM ​​reģistrus no rakstīšanas:
while(LCD->SR & LCD_SR_UDR);
Pēc informācijas rakstīšanas LCD_RAM ​​reģistros, LCD_SR reģistrā (LCD statusa reģistrā) jāiestata UDR bits (iestatīts no 1 līdz 2 bitiem):
LCD->SR |= LCD_SR_UDR; vai LCD->SR |= 0x4; /*0x4 = 100 */

Šīs ierīces mocīšanai un izpētei. Ne ātrāk pateikts, kā izdarīts. Šalle tika savākta un devāmies ceļā. O jā! Mūsu sarunas tēma izvērtās par abu MK salīdzināšanu. Iepriekš minētais ir pret ATmega328. Kāpēc tieši viņi? Abi MK ir TQFP-32 iepakojumā. (Tiesa, ATmega328 ir arī DIP pakotnē)
Tagad apskatīsim tuvāk to iekšpusi. Labākai izpratnei esmu apkopojis visus nepieciešamos datus vienā tabulā.

Iespējas ATmega328 STM32F030K6T6
Bitu dziļums 8 biti 32 biti
FLASH 32 kb 32 kb
SRAM 1 kb 4kb
EEPROM 512b -
Taimeris 8 biti 2 gab -
Taimeris 16 biti 1 dators 16 gab
PWM 3 kanāli 6 kanāli
USART 1 dators 1 dators
SPI 1 dators 1 dators
I2C 1 gabals (TWI) 1 dators
ADC 8 kanāli 10 biti 16 kanāli 12 biti
Uzturs 2,7 - 5,5 2,4 - 3,6
Ātrums 0 - 16 MHz 48MHz ar ārējo 4 - 32MHz
Cena 160-170 rubļi. 80-140 rubļi.
Kā redzams no tabulas, STM32 ir diezgan interesantāks un bagātāks par AVR. Ir tiešām viens sīkums. STM32 nav EEPROM, bet tam ir DMA, kas vienkārši pilnībā nogalina AVR. Tiesa, AVR lepojas ar Arduino un vienkāršu programmēšanu. Es nestrīdos, bet STM32 ir STM32Cube, kas ģenerē kodu IAR un rūpējas par visu perifērijas ierīču iestatīšanas kārtību. Un pēdējā nagla AVR zārkā ir RTOS. Jā, jūs varat to instalēt arī AVR, bet jums tas ir jāizdomā, bet STM32 mēs atzīmējam lodziņu "FREERTOS" un viss. Sistēma pati darīs visu nepieciešamo, un mums atliek tikai izveidot pavedienus un ierakstīt tajos kodu. Nu, tas ir tikai iesācējiem. Patiesībā tur viss ir nedaudz sarežģītāk. Īsāk sakot, man patīk STM32, un, lai beidzot jūs piesaistītu šai platformai, iemetot Arduino atvilktnē, es izveidošu dēli no sākuma līdz beigām un parādīšu, kā ar to strādāt. Ak, es aizmirsu. Visiem STM32 ir SWD atkļūdotājs. Tie ir trīs vadi SWDIO, SWCLK, GND, un jūs varat pāriet cauri koda rindām tieši aparatūrā, nevis kā ATmega328 praktiski Proteus. Lai to izdarītu, jums vienkārši nepieciešams ST-LINK universālais programmētājs. To var izmantot, ja iegādājaties Discovery plati vai atsevišķu programmētāju. Un tagad no vārdiem pie darbiem.
Shēma. Lielāks
Es izveidoju šo plati kā moduli savai AVR atkļūdošanas platei. Bet jūs varat to atkārtot, izplatot dēli pēc saviem ieskatiem (raksta beigās ievietošu DipTrace projektu). Kas ir diagrammā. Un diagramma parāda vienkāršu instalāciju kā AVR. 8 MHz kvarcs ar diviem 20p kondensatoriem. Tāpat kā AVR, ir samontēta barošanas ķēde ADC atbalstam. Atiestatīt ķēdi, piemēram, AVR. Vienīgā atšķirība ir BOOT ķēde. Atšķirībā no AVR, visiem STM32 ir aparatūras sāknēšanas ielādētājs. Pēc noklusējuma tas ir savienots ar USART. Tas ir, ja piespiežat BOOT0 tapu pie barošanas avota un restartējat MK, tad, izmantojot programmu Flash Loader Demonstrator, varat mirgot MK bez programmētāja. Šī funkcija noderīgi, ja jums jau ir gatava un darbojas ierīce un ir jāatjaunina programmaparatūra, tad jums ir nepieciešams tikai USB USART adapteris. Daudzi cilvēki nevēlas sajaukt ar STM32, jo strāvas padeve nav lielāka par 3,6 voltiem. Muļķības. Ja paskatās uz pin tabulu, jūs ievērosiet, ka visas kājas var saņemt 5 voltus bez sekām. Ejam tālāk.

Un šādi tas izskatās uzstādīts uz tāfeles.

Tagad mēs savienojam ST-LINK-GA programmētāju ar SWD savienotāju.

Tagad, kad viss ir gatavs, lejupielādējiet jaunāko versiju no ST vietnes (saite pašā lapas apakšā). Instalējiet un palaidiet.

Noklikšķiniet uz Jauns projekts. Parādītajā logā mēs atrodam mūsu kontrolieri. Noklikšķiniet uz Labi.

Pēc nelielas pārdomāšanas. Programma parādīs šādu logu.

Es neaprakstīšu, kas un kāpēc, jo šī ir atsevišķa raksta tēma. Tagad, piemēram, dariet to, ko es jums parādīšu. Ko mēs darām. Mēs uzsāksim operētājsistēma un vienā pavedienā mēs mirgosim LED. Sava veida “Heloy Word” no lielgabala.))) Lai to izdarītu, kreisajā logā noklikšķiniet uz pluszīmes blakus uzrakstam “FREERTOS” un atzīmējiet ķeksīti nolaižamajā sarakstā.

Turklāt, tiklīdz ir izvēlēts ārējais kvarcs, kontrollera labajā pusē kājas, uz kurām jums tas jāpakar, tiks iezīmētas zaļā krāsā. Nākamā lieta, kas jums jādara, ir izvēlēties kāju, uz kuras LED karājas. Izvēlējos portu B un tapu 0. Un atradu grābekli. Aiz bailēm, nezinu kāpēc, apgriezu otrādi pirmo četru tapu izejas ķemmi. Līdz ar to neskaidrības par portu B. Šī problēma skar tikai manu dēli. Bet nekas, tas netraucēja MK darboties. Un tā konfigurējiet tapu. Fakts ir tāds, ka ar STM visas tapas var iegūt virkni vērtību, bet, ja mēs runājam par diskrētu ievadi/izvadi, tad izvadei var būt trīs iespējas. Izvads gaisā, izvads ar pievilkšanos uz barošanas bloku plus, izvads ar pievilkšanos uz kopējo kopni. Pēc noklusējuma STM32CubeMX karājas kāju gaisā. Nu, lai tā būtu, mums tikai jāpārbauda darbs un jāparāda STM32 jauda. Lai konfigurētu kāju, noklikšķiniet uz tās ar peles kreiso taustiņu un parādītajā logā atlasiet GPIO_Output. Ja MK ir pārāk mazs, varat pagriezt riteni un palielināt to.)))

Nākamais solis ir pielāgot MK pulksteni. Fakts ir tāds, ka STM32 šajā jautājumā ir ļoti neskaidrs. Atšķirībā no AVR, STM32 ieejā ir kvarcs ar frekvenci no 4 līdz 32 MHz, un autobusos to var pārspīlēt līdz 48 MHz. MK iekšpusē ir ļoti sarežģīta pulksteņa sistēma, bet STM32CubeMX atkal nāk palīgā. Dodieties uz cilni Pulksteņa konfigurācija un konfigurējiet to, kā parādīts zemāk esošajā attēlā.

Tas ir viss. Augšpusē noklikšķiniet uz zobrata ikonas.

Parādīsies šāds logs.

Un te es aizmirsu pateikt. Lejupielādējiet un instalējiet IAR pats. To var lejupielādēt no ierēdņiem, bet samazināt koda daudzumu vai atrast torentos. Vai arī, ja jums ir daudz papildu naudas, varat iegādāties licenci. Nu, es domāju, ka daudzi sekos šim ceļam ar CodeVisionAVR. Kopumā es to atstāju jūsu ziņā. Man ir versija 7.40. Atgriezīsimies pie Kuba. Logā nosauciet projektu, bet tikai latīņu valodā, IAR nepatīk krievu burti celiņos. Un norādiet, kur projekts tiks saglabāts. IDE logā jāizvēlas (un tas ir pēc noklusējuma) EWARM. Noklikšķiniet uz Labi. Programma domā un pēc tam parāda šādu logu. Blah blah blah. Kopumā noklikšķiniet uz atvērt projektu (tiem, kas atrodas tvertnē, vidējā poga).

Logs pazudīs, un tā vietā tiks palaists IAR un mūsu projekts. Kreisajā pusē dodieties uz Lietojumprogramma->Lietotājs un palaidiet main.c. Šo kodu kopumu mums ģenerēja STM32CubeMX.

Un ko tagad darīt ar šīm šausmām? Bet šim nolūkam mums ir vajadzīga vesela rakstu sērija))) Un tagad mēs vienkārši atrodam šo koda daļu.

Šī ir mūsu vienīgā plūsma. Ķermenī cilpai(;;) mēs izdzēšam vienīgo funkciju osDelay(1); un tā vietā ierakstām šo kodu. HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
osDelay(500);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
osDelay(500);

Brīnišķīgi. Tagad vienkārši noklikšķiniet uz pogas ar zaļo bultiņu augšējā labajā stūrī un gaidiet kompilāciju un lejupielādi.

Ja viss ir pareizi un bez kļūdām, programma saliks visu projektu, izveidos visu nepieciešamo un ielādēs programmaparatūru MK. Pēc tam tas pāries atkļūdošanas režīmā. Šeit viņš ir. AVR cilvēka sapnis. Ja jums ir nepārvarama vēlme to izmantot, varat iet soli pa solim uz aparatūras, rindu pa rindiņai. Un, ja vēlaties redzēt, kā programma darbojas, nospiediet krustiņu augšējā kreisajā stūrī un izbaudiet gaismas diodes mirgošanu.

Tas ir viss. ChipResistor veikalā mikrokontrollerus var iegādāties par viszemāko cenu, pat par 78 rubļiem gabalā. Nu, ja grib lētāk, ir arī mazā vairumtirdzniecība. No 35 gabaliem jau par 50 rubļiem.
DipTrace projekts.
Un, protams, video.


viesis 31.12.2015 10:35

Nesen gribēju uztaisīt frekvences mērītāju uz ATMEGA16 plus ārēju 8 bitu skaitītāju uz 74 loģikas, tas nebija pietiekami ātrs.Mana galva nevar rakstīt montāžā, nožogot ārējo skaitītāju ar 16 bitiem ir sāpes ass.AVR ir pagājušais gadsimts,nav lēts kontrolieris.Atbalstu autoru,AVR ir Posms pagājis,nopirku arī stm32f100 čipu plus CP2103 USB adaptera čipu,drīz visi atteiksies no AVR.

Aleksejs 31.12.15. 12:26

ES nepiekrītu. Tomēr Arduino joprojām attīstās, un daudzi ar to ir piesaistīti, un pēdējais, savukārt, darbojas ar AVR. Iet uz STM ir kā pāriet uz nākamo līmeni. Tā teikt, no bērnudārza līdz skolai.

ANONĪMS 12.02.16 10:44

AVR un STM32 ir procesori, kas nekonkurē viens ar otru. Jūsu plāksnē nav svarīgākā parametra - tas ir strāvas patēriņš!! Un, skatoties uz viņiem, var nobirt asara. Atmega 328 – – Aktīvais režīms: 0,2 mA – Izslēgšanas režīms: 0,1 µA – Enerģijas taupīšanas režīms: 0,75 µA (ieskaitot 32 kHz RTC) STM32F030K6T6 48 MHz – Aktīvais režīms: perifērijas ierīces ieslēgtas 23,3 mA 1 Perifērijas ierīces. 0,048 mA STM32 nežēlīgi patērē elektrību – rupji rēķinot, 100 reizes vairāk nekā AVR. STM32 ierīci nevar darbināt no akumulatora. Bet AVR darbosies mēnešus. Tāpēc ir grūti atteikties no AVR. Veiksmi visiem.

Aleksejs 12.02.16. 10:54

Un neviens neiesaka mums atteikties no AVR. Es tikai parādu atšķirību perifērijā. Es joprojām uzturu AVR bibliotēku, un mans galvenais MCU joprojām ir ATMega8A.

Sergejs 24.02.16 18:02

Manuprāt, ir kaut kā dīvaini salīdzināt svaigo STM32 ar pensionēto AVR. Ja vēlaties salīdzināt STM32 ar ATMEL kontrolieriem, tad salīdziniet tos ar ATSAM saimi, bet ne ar AVR.

Andrejs 02.24.16 18:06

Kas ir šis pensionārs? AVR ir dzīvs un turpinās dzīvot, kas zina, cik ilgi. Un skatoties uz tabulu, manuprāt, salīdzinājums ir vairāk uz perifēriju, nevis uz arhitektūru.

Aleksejs 02.24.16 19:04

Nu sākas. Tagad apspriedīsim AMD un Intel.

Sergejs 24.02.16 22:02

Uz centrmezgla viens “eksperts” rakstīja, ka AVR nav paralēlās kopnes standarta LCD pieslēgšanai, bet STM32 gan...

Aleksejs 02.24.16 22:36

Ko nozīmē standarta LCD? Vai tas ir par FSMC? Tātad tas attiecas ne tikai uz displeju, bet arī uz atmiņu. Tikai paralēlais autobuss. AVR arī tāds ir, piemēram Mega8515. SRAM var savienot ar to, izmantojot fiksatoru.

Sergets 25.02.16 06:24

Aleksej, par ko es runāju?! Šķiet, ka jūs pat nemēģināt saprast manu ziņojumu nozīmi.

Aleksejs 25.02.16. 09:38

Nu, kāda jēga salīdzināt divus identiskus dažādu uzņēmumu mikrokontrollerus? Abi ir ARM kodolā. Ja jūs patiešām esat izvēlīgs, jums patiešām ir jāsalīdzina AVR ar STM8. Pēc tam es pieturējos pie perifērijas tuvuma, formas un cenas. Un tikai cita arhitektūra.

Adlan 03.06.16 17:40

Sveiki. Palīdziet, lūdzu, kurš var. Uzstādīts jaunākā versija Kuba 4.15, F1 bibliotēkas 1.4.0. Izveidotais tukšais projekts EWARM neapkopo - ir vairāk nekā simts kļūdu. Kas tas varētu būt? Paldies [aizsargāts ar e-pastu]

Aleksejs 03.06.16 20:48

Adlan, pirmā lieta, kas jums jādara, ir augšupielādēt projektu, kas netiks kompilēts.

Dok. 18.07.16. 21:51

"Tā ir taisnība, ka AVR lepojas ar Arduino un vienkāršu programmēšanu." AR ko viņš var lielīties? ;D

Aleksejs 19.07.16. 11:41

Tas ir muļķīgs salīdzinājums. Pirmkārt, STM ir Arduino analogs, ko sauc par nucleo. Programmas tiek rakstītas tiešsaistes IDE tieši caur pārlūkprogrammu. Bet, ja akmens priekšrocības personīgi, tad. Pamata darbības frekvence ir 72 MHz, par tādu ātrumu AVR pat sapņot nevarēja. Protams, ja jūs mirgojat LED, tad nav nekādas atšķirības, bet, ja jūs iedarbināsit asi un perifēro ierīču gūzmu, AVR noplīsīs. Bitu ietilpība, 32 ir tālu no 8. STM perifērijas ierīcēs var būt 3 I2C, 3 SPI, 6 UART, USB, CAN, Ethernet. Gandrīz visam ir iespēja pārkartot, tas ir, pārnest uz citām mk kājām. Ir arī DMA, tas ir neatkarīgs kopprocesors darbam ar perifērijas ierīcēm. Tātad AVR pārtraukumi nervozi kūp malā. Tam ir aparatūras SDIO pilnvērtīgu darbu ar CD kartēm, nevis kruķu ISP AVR. Kopumā tur ir daudz vairāk, bet lielākais akmens AVR dārzā ir trokšņu noturība. Izsist AVR ar kabeli, kas iet netālu no elektromotora, nav nekas, bet STM ir jāpamēģina. Tāpēc es neieteiktu sarkastiski izturēties pret Arduino.

viesis 08/11/16 23:27

MICROCHIP absorbē AVR!))))))))))))

Aleksejs 12.08.16 08:35

Mēs kavējāmies ar ziņām, piemēram, pirms pieciem gadiem.

Vladimirs 17.08.2016 22:56

Aleksejs! 2016. gada janvārī Microchip nopirka Atmel par 3,56 miljardiem dolāru. Kādi 5 gadi?

Aleksejs 18.08.16. 10:30

Tas ir de jure, bet de facto tas notiek kopš 2008. gada. Tāpēc es tiešām pieļāvu kļūdu, nevis pirms 5 gadiem, bet pirms 8 gadiem.))))

Vladimirs 18.08.2016 23:53

Aleksejs!Es sāku pāriet uz stm32!Un kas attiecas uz patēriņu autonomajā režīmā, viņš iesaka visu nepulkstēt, tad patēriņa strāva samazināsies.

Oļegs 09.11.16 22:31

STM datu lapā es neatradu sistēmas pulksteņa CLK patēriņa grafikus, piemēram, AVR - un saskaņā ar tām plāksnēm, kas tur ir, STM32 tieši zaudē gan normālā režīmā, gan dīkstāves režīmā. Jā, un šim STM32 nav 72 MHz takts - tikai 48 max, tas arī viss, tāpēc pat ar 32 bitiem 8 beatnik AVR - tas izrādās labāk, un, starp citu, ražotājs datu lapā nav ierakstījis, cik pulksteņa cikli STM32 mašīnas ciklā tam ir, tādēļ, ja izrādās, ka tas ir 2 pulksteņa cikls pret 1 AVR, tad ņemiet vērā, ka 48/2 = 24 reālie MHz - gandrīz tas pats, kas 20 MHz AVR. Tātad jautājums ir - kur ir šis STM32 brīnums, par kuru jūs visi runājat?

ANONĪMS 09.11.16 23:03
Aleksejs 10.11.16. 00:23

Es pat negribu strīdēties. Kura ir labāka Intel vai AMD? Vai Žigulis vai Volga? STM ir aparatūras USB, CAN, Ethernet, SDIO un virkne citu perifērijas ierīču, par kurām AVR var tikai sapņot. Beigās ir DMA kā neatkarīgs kopprocesors ar tiešu piekļuvi atmiņai, kura priekšā visi AVR pārtrauc nervozi dūmus malā. Piemēram, pirmajā sērijā ir 3 UART, 2 SPI, 3 I2C. Ir portu pārskats, un jums nav jāuztraucas par to, kā izjaukt dēli. Ja jums patīk strādāt ar AVR, tad strādājiet ar tiem, kas jums traucē. Līdz šai dienai es pelnu mega astotniekus par maziem projektiem un nesūdzos. Ak, jā, pielīmējiet AVR blakus starterim un vērojiet, kā tas ar traucējumiem izpūš galvu. AVR nav EMI aizsardzības. Tāpēc PIK vienmēr tika uzstādīti automašīnu signalizācijās, jo AVR šādos apstākļos nomirst. Kāpēc strīdēties, tas ir miris skaitlis.

Kornets 27.11.16 21:22

Starp citu, STM32 jau ir Arduino. Tas ir Amperka un visādi Espruino iekš JS) Turklāt, ja Mikročipu paņēma Atmel, nu, skrūvējiet tos

Aleksejs 27.11.16 21:44

Nosaukums Espruino parodē Arduino, tā laika slavenāko hobiju platformu, taču Espruino nav savienojams ar klasiku. Arduino Uno ne mehāniski, ne programmatiski.(cits no Amperka)
Man ir arī Nucleo plate, un tai arī nav nekāda sakara ar Arduino, izņemot pašas plates ģeometriju)))
Kopumā pēc būtības es izmantoju MK, kas ir piemērots pašreizējam uzdevumam.

Andrejs 20.12.16. 22:50

Kam patīk pārmaksāt: ir vērts attiny2313-20 - 2Kb-flash /128bit-ram/16bit_ timer -1/8bit_ timer -1 =2.1$ vs stm32f103c8t6 64Kb-flash/20Kb-sram/16BIT control timer (dual + dead timer). -kanāla PWM režīms ) -4/ADC-2/72MHz CPU/=2,3$.Manuprāt, uztaisīt pretestības mērītāju RLC ķēdei izmantojot AVR ir gandrīz neiespējami, vai arī ir 10 akmeņi.Bet to var izdarīt ar STM un FFT (palīdz DMA).Izmēģināju kaut kā uztaisīt frekvences mērītāju uz Mega10 (precizitāte 1 herts) - tas vienkārši nebija pietiekami ātrs (vai uzstādiet ārēju 32 bitu skaitītāju ar maiņu reģistru - no kurienes nāk izmēri Es atteicos no AVR pirms gada, izrādās, ka AVR ir paredzēts bagātiem cilvēkiem.

Andrejs 20.12.16. 22:53

ANONĪMS rakstīja - "Un šeit ir vēl viens citāts no STM32 apraksta krievu valodā - "...Ar
brīdis
saņemšana
pārtrauc
pirms tam
sākās
izpildi
vispirms
komandas
apdarinātājs
pārtrauc
ir iztērēts
tikai
divpadsmit
cikli
pulkstenis
signāls"

Tā ir taisnība, bet reiziniet divus 32 bitu skaitļus ar avr — nepārprotami 8-10 pulksteņa cikli!

Aleksejs 20.12.16. 23:31

Jā, es jau nožēloju, ka tas halivars sākās.))))

Aleksandrs 21.12.2016 00:27

Izlasīju komentārus un atcerējos.
Divi bērni smilšu kastē
Viena duduka!
Otrkārt, pīkst!
Pirmkārt, Duduka! (intonācija draudīgāka)
Otrkārt, BIBIKA! (Ar vēl izteiksmīgāku intonāciju)
Pirmā DUDUKA! (Jau kliedz)
Otrā BIBIKA!!! (Gandrīz raudu)
....
Šī cīņa ir beigusies, abi stāv un raud, viens skaļāk par otru.)))

Val 02/10/17 01:43

Kāda frekvence būs, ja cilpu veiksiet bez kavēšanās?
kamēr (1)
{
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOB,GPIO_PIN_0,GPIO_PIN_RESET);
}

Aleksejs 10.02.17 10:07

Tas, kas atrodas APB autobusā

Igors 06.08.17 22:33

Tak uzreiz integrēsim portatīvos datorus iegultās sistēmās, tie ir simtiem reižu labāki par STM, un tur ir vienkārši sasodīti daudz perifērijas, tur jau ir Wi-Fi un bluetooth un pat programmētājus nevajag, uzreiz ir monitors ar tastatūra, lai rakstītu programmu un palaistu nekavējoties, un programmētāji un atkļūdotāji nav vajadzīgi.
Tas ir tāpat kā iegādāties ekskavatoru personīgai lietošanai savā kotedžā, lai REIZM izraktu pāris pusmetra dziļas bedrītes.
Ielikt STM termostatā, pulkstenī, svaros, nu, manuprāt, tas nav normāli. Starp citu, jā, kā būtu nepastāvīga atmiņa, tāpēc es taisu termostatu, iestatu temperatūru, tad gaismas nodziest, un ko darīt, iestatījumi tiek zaudēti. Bet iegultās sistēmās, kas vienreiz jākonfigurē turpmākai darbībai, vērtības ir jāsaglabā uz visiem laikiem

Aleksejs 09.06.17 08:25

Piemēram, STM32F030F4P6 mikroshēmas iegremdēšana maksā 48 rubļus, un tiešais analogs ATtiny2313 maksā 98 rubļus. Es domāju, ka ar jebkuru no tiem pietiks, lai izveidotu termostatu. Un STM atmiņas kompensācija var būt jebkurā temperatūras sensorā. Jā, vismaz tajā pašā DS18B20. Kas attiecas uz klēpjdatoriem, tad jebkurā maksājumu pieņemšanas terminālī ir instalēts dators ar OS un monitoru. Tātad ir pat tādas sistēmas. Izvēloties MK, vispirms izvēlies lētāko. Ja tas ir hobijs, tad var nopirkt Arduino, lai nebūtu jāpūlas ar lodēšanu, un, kad sistēmu plānots laist ražošanā un ražot simtos, tad katrs santīms ir svarīgs. Un pārmaksāt 50 rubļus par MK, ja tā cena ir 48, ir nepieejama greznība.

Ruslans 17.06.17 21:46

Aleksej, kāpēc izvēlējāties IAR programmēšanas vidi?
Kuru vidi iesācējam labāk izvēlēties (lai būtu daudz mājienu, kā Atmel studija)?

Aleksejs 17.06.2017 22:07
Ruslans 17.06.17 22:56
Ja neizskatījos "slikti", tad iedodiet saiti, kur var paskatīties vai izlasīt, kā to izdarīt!
Vēl labāk uztaisi video, domāju, ka daudziem iesācējiem (un ne tikai) būs interesanti to noskatīties!
Paldies jau iepriekš!
Aleksejs 05.08.17 10:19
Ruslans 22.11.17 12:17

Es domāju šo https://www.youtube.com/watch?v=wOIlhRd-vN8
5-7 minūtes!!!

Ruslans 22.11.17 12:18

Aleksej, pastāsti, lūdzu, kā strādāt ar “enum” uzskaitījumiem, citādi tādas informācijas nekur nav un tavos video arī “C mazajiem” nav, bet man to ļoti vajag!
Kad es spēlējos ar AVR, nebiju redzējis tādu brīnumu kā uzskaitīšana, bet tagad mani interesē STM, un to ir daudz! Un nav informācijas, kā ar viņiem strādāt!
Šeit ir piemērs no reāla koda:


StatusCode MIFARE_Read(baits blockAddr, baits * buferis, baits * bufera izmērs);

Kur atrodas StatusCode uzskaitījums:


enum StatusCode: baits (
STATUS_OK , // Veiksme
STATUS_ERROR , // Kļūda komunikācijā
STATUS_COLLISION , // Konstatēta sadursme
STATUS_TIMEOUT , // Saziņas noildze.
STATUS_NO_ROOM , // Buferis nav pietiekami liels.
STATUS_INTERNAL_ERROR , // Iekšēja kļūda kodā. Tā nedrīkst notikt ;-)
STATUS_INVALID , // Nederīgs arguments.
STATUS_CRC_WRONG , // CRC_A neatbilst
STATUS_MIFARE_NACK = 0xff // MIFARE PICC atbildēja ar NAK.
};

Tas ir no Arduino bibliotēkas (C++), bet Keils to zvēr!
Kā pareizi uzrakstīt uzskaitīšanas funkcijas atgriešanos?

Ruslans 22.11.17 12:29

Un kā deklarēt vienu no argumentiem funkcijā, kas ir uzskaitījums:


void PCD_WriteRegister(PCD_Register reg, baita vērtība);

Kur ir norādīts PCD_Register:


enum PCD_Register: baits (
// 0. lapa: komanda un statuss
// 0x00 // rezervēta izmantošanai nākotnē
CommandReg = 0x01<< 1, // starts and stops command execution
ComIEnReg = 0x02<< 1, // enable and disable interrupt request control bits
DivIEnReg = 0x03<< 1, // enable and disable interrupt request control bits
ComIrqReg = 0x04<< 1, // interrupt request bits
...
};

Un reg, kā es saprotu, ir uzskaitījums, bet tas nekur kodā nav deklarēts un es nesaprotu, no kurienes tas ir radies!
Internetā izlasīju daudz lappuses un atradu informāciju, ka šos uzskaitījumus var aizstāt ar definīcijām, bet tomēr gribēju zināt, kā ar tiem strādāt!!!

Ruslans 22.11.17 12:35

Ar nepacietību gaidu tavu atbildi!
Varbūt uztaisi video kā ar viņiem strādāt, lai citiem derētu, manuprāt video ļoti noderēs, jo tādu nav (vismaz es neesmu atradusi)!

Dmitrijs 28.11.17 22:02

"Vienkārša programmēšana"

Interesants orgāns kontrolieru programmēšanai. Kopumā nav skaidrs, kā bija iespējams salīdzināt 32 bitu ar 8 bitu. Kā Porsche Cayenne ar Zarporožecu.

Aleksejs 29.11.17 10:24

Var salīdzināt, var. Tikai jāņem vērā, ka šajā salīdzinājumā Porsche ir lētāks par Zaporožeci. Attiecībā uz uroloģiju tas ir pikantāks. Tāpēc es to nelabošu.

Konstantīns 23.12.17 00:06

Ruslan, es nesaprotu, kā tu meklē un neko neatrodi (acīmredzot tu nemeklē). Tie ir paši C valodas pamati (ne tikai MK, bet arī datoriem). Izlasi Kernigana un Ričija grāmatu, tur viss C ir lieliski aprakstīts.
Un neviens neatbildēs uz jūsu jautājumiem, tās ir elementāras lietas.

ANONĪMS 11.02.18 16:27

Kāpēc jūs salīdzināt 32 bitu ST MK ar 8 bitu Atmel? Stulbs salīdzinājums. Tas ir līdzvērtīgs 32 bitu Atmel AT91SAM salīdzināšanai ar 8 bitu STM8, pat ņemot vērā, ka Atmel ir 32 vēl jaudīgāki izlādētāji.

Aleksejs 13.02.18. 12:18

Tā kā rakstīšanas laikā 8 joslu ST nebija pārdošanā, un mega un STM32 cena ir vienāda.

STM32_Dev 19.06.19. 13:59

Nu, AVR prasa 4-5 pulksteņa ciklus, lai darītu to pašu!!! Vienkārši. Un šeit atkal izrādās, ka AVR ir izgatavots labāk nekā STM32, ar savu uzpūsto pulksteni, un STM32 nav EEPROM iekšā kā AVR

AVR pulkstenis pie 16 MHz - 1/16000000 = 0,0000000625 s = 62,5 ns * 5 pulksteņi = 312,5 ns.
ARM pulkstenis pie 48 MHz - 1/48000000 = 0,0000000208 s = 20,8 ns * 12 pulksteņi = 250 ns.

Šķiet, ka muzejs atmega skaita savus 5 pulksteņa ciklus ilgāk nekā STM32 12 pulksteņu ciklus)))

Vai STM32 nav eprom? Protams? STM32L152 — 8kB eprom! Kā ar atmegu? 512 baiti? Ak, cik daudz!!! Es pat nezinu, ko tur rakstīt. Padomāsim... mmm... 16 mainīgie pa 4 baitiem katrs)) Nu, tas ir tikai pērkona negaiss starp kontrolieriem))

SIM31 30.06.19. 19:29

Patēriņa ziņā var arī salīdzināt, jaunā atmega un attiny ir ļoti ekonomiski.
Un visam ir savs pielietojums. Ja jums ir nepieciešama jauda, ​​paņemiet Raspbery Pi 4 un neuztraucieties, Python ir vēl vairāk iespēju, pat izveidot pilnvērtīgu tīmekļa serveri un pat palaist Quake 3D.
Ja jums ir nepieciešams apstrādāt datu straumes, ir pieejams pls (skatiet projektu "Mars Rover" "Mars Rover 2")
Autoram ir daudz pozitīva, taču tas, ka Arduina ir dzīvāka par visu dzīvo, nozīmē, ka ne viss ir tik vienkārši.


Jau daudzus gadus radio amatieri ir izmantojuši astoņu bitu PIC un AVR saimes mikrokontrollerus. Tie ir populāri to zemās cenas, detalizētās dokumentācijas, programmēšanas un uzstādīšanas vienkāršības dēļ. Tomēr diezgan bieži ir gadījumi, kad šāda mikrokontrollera jauda nav pietiekama, lai atrisinātu uzdevumu. Vienkāršākais piemērs ir frekvences mērītājs vai signāla ģenerators uz mikrokontrollera, kur maksimālā izmērītā vai ģenerētā frekvence ir tieši atkarīga no informācijas apstrādes vai izvadīšanas ātruma.

Bez ātruma astoņu bitu mikrokontrolleriem ir arī citi ierobežojumi, piemēram, daudziem AVR modeļiem ir tikai viens aparatūras seriālais ports, kas neļauj saņemt informāciju no ārējas ierīces un vienlaikus nosūtīt tās apstrādes rezultātus patērētājam. Nemaz nerunājot par tādām “banālām” lietām kā informācijas attēlošana uz grafiskā indikatora, kas prasa lielus gan ātruma, gan atmiņas resursus. Izanalizējot vairākus šādus ierobežojumus, autors nāca klajā ar ideju pāriet uz STM32 saimes mikrokontrolleriem.

Piemēram, apsveriet divus vienas cenu kategorijas mikrokontrollerus - STM32F103C6 un ATmega328P.

1. tabula

Mikrokontrollera tips

Procesora izmērs

Svina solis, mm

Pulksteņa frekvence, MHz

FLASH atmiņas apjoms. KB

RAM apjoms, KB

USART numurs

16 bitu taimeru skaits

I/O līniju skaits

Aptuvenā cena, rub.

To salīdzinošie parametri ir norādīti tabulā. 1. Salīdzināšanas rezultāti ir pat zināmā mērā pārsteidzoši. 32 bitu mikrokontrolleris ir ne tikai jaudīgāks par astoņu bitu mikrokontrolleri gandrīz visos aspektos, bet arī lētāks. Protams, mājās pielodēt mikrokontrolleri ar tapu soli 0,5 mm nav tik vienkārši. Par laimi, vairumā gadījumu tas nav nepieciešams - tirgū ir daudz veidu izstrādes plates ar STM32 saimes mikrokontrolleriem, kas ir pietiekami dažādām lietojumprogrammām. Apskatīsim tos sīkāk.

STM32F4-DISCOVERY

Šī plate (parādīta 1. attēlā), iespējams, ir visērtākā iesācējiem, kuri studē STM mikrokontrollerus. Pirmkārt, tam ir liels perifērijas ierīču komplekts. Papildus mikrokontrolleram plate satur mikroelektromehānisko akselerometru, mikrofonu, audio DAC, divus USB savienotājus, pogu un četras gaismas diodes.

Mikrokontrollera tapas tiek izvadītas uz kontaktu paliktņiem, lai piestiprinātu tapu savienotājus plates kreisajā un labajā malā, kas ļauj ērti savienot visas nepieciešamās ārējās ierīces. Uz tāfeles uzstādītajam mikrokontrollerim STM32F407VGT6 ir ļoti labi parametri: 1 MB FLASH atmiņa, 192 KB RAM un 168 MHz takts frekvence.

Visbeidzot, plate ir aprīkota ar iebūvētu ST-LINK/V2 atkļūdotāju, ar kuru var atkļūdot programmas ne tikai uz plates esošā mikrokontrollera, bet arī tās pašas ģimenes mikrokontrolleros, kas atrodas uz citām platēm. Pārslēgšanās uz tiem tiek veikta, izmantojot noņemamu džemperi un SWD savienotāju.

Dēļa cena ir aptuveni 800 rubļu, ko var uzskatīt par diezgan pieņemamu.

STM32F103RBT6 izstrādes padome

Nākamā interesanta iespēja ir izstrādes plate ar mikrokontrolleri STM32F103RBT6 (2. att.).

Tas ir nedaudz vājāks nekā iepriekšējā platē instalētais - takts frekvence 72 MHz, 128 KB FLASH atmiņa un 20 KB RAM, taču perifērijas ierīces ir ļoti interesantas. Ir TFT skārienekrāns ar 320x240 pikseļu izšķirtspēju un 2,8" diagonāli, iebūvēts USB ports informācijas apmaiņai ar datoru, slots SD atmiņas kartei, 32768 Hz kvarca pulkstenis, nodalījums reāllaika pulksteņa akumulators un ST-LINK savienotājs programmu atkļūdošanai.

Arī šīs plates cena ir aptuveni 800 rubļu, taču jāņem vērā, ka tajā nav iebūvēta atkļūdotāja. Lai lejupielādētu programmas, jums ir jāiegādājas atsevišķs ST-LINK atkļūdotājs vai tā vietā jāizmanto STM32F4-DISCOVERY panelis, kas tika apspriests iepriekš.

Maple Mini

Pārsteidzoša ir šīs plates ārējā līdzība (3. att.) ar labi zināmajiem Arduino moduļiem. Un tā nav nejaušība.

Maple Mini dēlis tika izstrādāts kā Arduino Nano aizstājējs. Arduino instalētās AVR saimes mikrokontrolleru programmēšanas valoda un izstrādes vide ir pielāgota STM saimei. Apmeklējiet vietni http://leaflabs.com/docs/maple-q uickstart.html, lai iegūtu detalizētu informāciju par Maple IDE programmēšanas valodu un izstrādes vidi.

Izstrādes platē ir STM32F103CBT6 mikrokontrolleris, kas darbojas ar 72 MHz, 128 KB FLASH atmiņa un 20 KB RAM, kas neapšaubāmi ir vairāk nekā jebkurš Arduino modulis. Un vēl lielāks pluss ir tas, ka izstrādes vide ir palikusi praktiski nemainīga.

Atsevišķi mēs atzīmējam, ka, neskatoties uz tā miniatūro izmēru, Maple Mini nodrošina ļoti dažādas perifērijas ierīces: 34 I/O līnijas, divus SPI un divus I2C interfeisa kanālus, trīs seriālos portus. Tas ļauj to veiksmīgi izmantot dažādās amatieru izstrādēs. Pateicoties tā mazajam izmēram, Maple Mini var iebūvēt tieši izstrādātajā ierīcē.

Oriģinālo Maple Mini dēli tā izstrādātāju vietnē var iegādāties par 35 USD. Piegāde maksās vēl 5 USD. Ķīnā ražota tāfeles kopija maksās uz pusi lētāk.

Programmatūra

Ir vairākas izstrādes vides iespējas, kuras var izmantot, lai sagatavotu programmas STM32 saimes mikrokontrolleriem:

Komerciālie IAR Embedded Workbench, AtollicTrueSTUDIO, Keil uc Šie pilna funkcionalitātes produkti ir diezgan dārgi, to licences cena ir sākot no 1000 eiro, taču ir arī bezmaksas demonstrācijas versijas ar izstrādātās programmas apjoma ierobežojumu; lielākajai daļai ar vienkāršiem projektiem pietiek;

Bezmaksas Eclipse ar ARM-GCC kompilatoru pirms lietošanas ir nepieciešama netriviāla kompilatora konfigurācija. Vienīgais pluss šodienai ir iespēja strādāt ne tikai Windows, bet arī Linux;

Bezmaksas CooCox IDE (CoIDE), pamatojoties uz to pašu Eclipse redaktoru. Ielādē un atkļūdo programmas, izmantojot ST-LINK. Atšķirībā no iepriekšējās opcijas, CoIDE nav nepieciešami īpaši iestatījumi un darbojas uzreiz pēc instalēšanas. Šī opcija ir visērtākā, un to ir vērts izmantot.

Izmantosim CooCox IDE, lai izveidotu paraugprogrammu STM32F4-DISCOVERY platei, kas jebkuram mikrokontrollerim ievieš klasisko LED mirgošanu pirmajā programmā. Uz STM32F4-DIS-COVERY plates ir četras gaismas diodes, tās ir savienotas ar mikrokontrollera tapām PD12-PD15. Liks tiem mirgot pārmaiņus.

Solis 1. Palaidiet CoIDE izstrādes vidi un izveidojiet projektu. No nolaižamā saraksta, kas parādīts attēlā. 4, atlasiet mikrokontrolleri STM32F407VG.

2. darbība. Kā parādīts attēlā. 5, atlasiet komponentus, kas tiks izmantoti projektā. Galvenās no tām ir GPIO (input-output), C Library (C valodas pamatfunkcijas) un M4 Core (procesora pamatfunkcijas). Kad aktivizējat komponentu, CoIDE automātiski kopē nepieciešamos failus projekta mapē, kas ir ļoti ērti.

Solis 3. Programmas teksta ievadīšana. Tas ir diezgan īss un ir norādīts tabulā. 2.

Kā redzat, viss ir vienkāršs un acīmredzams. Tie, kas ir rakstījuši programmas AVR mikrokontrolleriem, iespējams, redzēs pazīstamus dizainus - portu inicializāciju, kas norāda virzienu (ieeja vai izeja), galvenā cilpa, kurā tiek veiktas nepieciešamās darbības. Kopumā programmas sintakse pilnībā atbilst C valodai, kurai literatūras ir vairāk nekā pietiekami. Internetā ir arī daudz rakstu par STM32 programmēšanu. Daudzi piemēri tiek piegādāti kopā ar izstrādes paneli, un tos var izmantot arī kā paraugus.

Pēc programmas teksta ievadīšanas, noklikšķinot uz ekrāna pogas "Lejupielādēt uz zibspuldzi", tā tiek lejupielādēta mikrokontrollerī. Uz tāfeles sāk mirgot gaismas diodes. Atsevišķi ir vērts atzīmēt atkļūdošanas iespējas - pārtraukuma punktu var iestatīt jebkurā programmas vietā, jūs varat palaist programmu soli pa solim, apskatot mainīgo vērtības.

Protams, šis piemērs nav ideāls. Piemēram, varat izmantot taimera pārtraukumus, lai kontrolētu gaismas diožu mirgošanu, kas atbrīvo galveno programmas cilpu citiem uzdevumiem. Tie, kas vēlas, to var izdomāt paši.

Secinājums

Kopumā pēc pirmās iepazīšanās STM32 saimes mikrokontrolleri atstāja ļoti patīkamu iespaidu. Viss izrādījās ne tik sarežģīts, un izstrādes vides ērtības, atkļūdošanas process un lielais standarta funkciju skaits pat nedaudz atgādināja pāreju no Ms DOS uz Windows - vispārīgie punkti, šķiet, ir vienādi, bet viss ir daudz ērtāk un funkcionālāk.

Bet galvenais šīs saimes trūkums amatieru attīstībai joprojām ir pārāk mazs tapas solis. Plātnes projektēšana un lodēšana ar tapu soli 0,5 mm mājās ir ļoti nenozīmīgs uzdevums. Bet par pašreizējām cenām atkļūdošanas plates ar jau uzstādītiem mikrokontrolleriem ir diezgan pieejamas ikvienam radioamatierim.

Vai ir vērts visu pārveidot uz STM un 32 bitu arhitektūru? Protams, nē. Ir uzdevumi, kuriem ATtiny ir pilnīgi pietiekams. Bet, piemēram, lai analizētu spektru pašdarinātā SDR uztvērējā vai tīklā saņemtu un pārsūtītu lielu informācijas daudzumu, daudz efektīvāk ir nekavējoties izmantot jaudīgu mikrokontrolleri, lai nerastos atmiņas vai veiktspējas trūkums. ierīces uzlabošana.

Pamatojoties uz Cortex kodolu, viņi sāka aktīvi iegūt popularitāti gan profesionālu, gan iesācēju mikrokontrolleru ierīču izstrādātāju vidū. Tam ir vairāki iemesli:
- zema cena salīdzinājumā ar konkurentiem;
- liels skaits iebūvēto saskarņu;
- programmēšanas vienkāršība un augsta uzticamība.
Bet ir arī viens būtisks trūkums - visi STM mikrokontrolleri netiek ražoti DIP pakotnēs, kas bieži vien vienkārši atbaida iesācējus, jo mājās izgatavot dēli ar sliedēm, kas mazākas par 0,3 mm, ir problemātiski. Šis stāvoklis ir novedis pie tā, ka tirgū ir parādījies liels skaits atkļūdošanas dēļu gan no ST Microelectronics (Discovery), gan trešo pušu uzņēmumu (Olimex, Pinboard) ražotu dēļu. Es izvēlējos Discovery trīs iemeslu dēļ:
- salīdzinoši zema cena (dēli var iegādāties no 300 rubļiem);
- laba darba kvalitāte (lai gan ir dažas sūdzības par elektroinstalāciju, bet tās nav tik nozīmīgas);
- ražotāja vietnē ir ievietoti daudzi avoti un piemēri;
- iebūvēta programmētāja klātbūtne (jums tas nav jāpērk atsevišķi).
Pirmās nodarbības mērķis ir palīdzēt iesācējam izstrādātājam izvēlēties atkļūdošanas dēli, bet turpmāk – iemācīt programmēšanas pamatus.
Tātad, ejam.

STM32F0DISCOVERY

Šī plate tika izlaista 2012. gada februārī, lai piesaistītu izstrādātājus, kuri iepriekš bija izmantojuši 8 bitu mikrokontrollerus, tādējādi aizpildot šo nišu. Es nevaru par viņu teikt neko labu vai sliktu. Parasts dēlis, lēts, ir lieliski piemērots darba sākšanai. Ir šādas īpašības:
- mikrokontrolleris: STM32F051R8T6 (Cortex M0, 48 MHz, zibatmiņa 64 KB, RAM 8 KB);
- iebūvēts ST-link/V2, ko var lietot atsevišķi no plates;
- baro no USB vai no ārēja 3/5V avota;
- 4 gaismas diodes un 2 pogas;
- saskarnes: USART, SPI, I2C, HDMI;
- taimeri 16 un 32 biti;
- visas izejas tiek novirzītas uz divām vienas rindas ķemmēm.
Faktiski šāds dēlis jau ir diezgan novecojis, un to ieteicams ņemt tikai pašā apmācības sākumā.

STM32VLDISCOVERY

No iepriekšējās plates tas atšķiras tikai ar STM32F100RBT6B procesoru (Cortex M3, 24 MHz, zibatmiņa 128 KB, RAM 8 KB) un perifērijas ķemmes izkārtojumu. Tāpat kā iepriekš apspriestais, tas ir piemērots iesācējiem izstrādātājiem. Vairāk par viņu nav ko teikt.

STM32LDISCOVERY

STM32LDISCOVERY ir iepriekšējās plates cienīgs evolūcija. Lūk, kas tajā ir interesants:
- mikrokontrolleris STM32L152RBT6 (Cortex M3, 32 MHz, zibatmiņa 128Kb, RAM 8Kb, EEPROM 4Kb)
- saskarnes: USB, USART, SPI, I2C;
- 8 taimeri;
- 24 kanālu 12 bitu ADC;
-12 bitu DAC;
- reāllaika pulkstenis;
- LCD kontrolleris 8x40
- iebūvēts ST-link/V2.
Uz tāfeles ir uzstādīti šādi elementi:
- LCD displejs 24x8;
- 4 gaismas diodes;
- 2 pogas;
- skārienjutīgā tastatūra;
- 2 vienas rindas ķemmes ar brīviem vadiem.
Atsevišķi vēlos teikt par USB: kontrolieris atbalsta USB 2.0 pilna ātruma, saimniekdatora un ierīces režīmus, kas šīs klases MK ir reti sastopams.
Faktiski dēlis ir labākais risinājums darbam ar Cortex-M3 kodolu, tāpēc varat to droši ņemt, jo cena ir zema.

STM32F3 DISCOVERY

STM32F3DISCOVERY pieder pie nākamās paaudzes STM izstrādes paneļiem, un tam ir šādas īpašības:
- mikrokontrolleris STM32F303VCT6 (Cortex M4, 72 MHz, zibatmiņa 256 KB, RAM 48 KB)
- reāllaika pulkstenis;
- iebūvēts ST-link/V2;
- 13 taimeri;
- 12 kanālu DMA kontrolieris;
- 4 ADC;
- 4 operacionālie pastiprinātāji;
- saskarnes: CAN, USB 2.0, USART/UART, SPI, I2C;
- 87 GPIO līnijas.

- pielāgots USB ports;
- 3 asu akselerometrs un 3 asu ģeomagnētiskais sensors vienā korpusā;
- 3 asu žiroskops;
- 10 gaismas diodes;
- 2 pogas;
- 2 divrindu ķemmes.
Ļoti interesants dēlis, daudz iespēju eksperimentēt. Kopumā viedoklis par to joprojām ir labs, taču tā koncentrēšanās uz fiziskā stāvokļa un pozīcijas izsekošanu ievērojami samazina eksperimentēšanas iespējas, lai gan jūs varat viegli izveidot paplašināšanas plati.

STM32F4DISCOVERY

Ar šo dēli man bija iespēja strādāt visvairāk, un tā man patika vairāk nekā pārējās – tās visaptverošais fokuss to ietekmēja.
Lūk, kas tas ir:
- mikrokontrolleris STM32F407VGT6 (Cortex M4, 168 MHz, zibatmiņa 1 MB, RAM 192 KB)
- iebūvēts ST-link/V2;
- taimeri;
- DMA kontrolieris;
- ADC/DAC;
- saskarnes: CAN, USB 2.0, USART/UART, SPI, I2C, GPIO;
Platē ir šādas perifērijas ierīces:
- pielāgots USB ports;
- 3 asu akselerometrs;
- 8 gaismas diodes;
- 2 pogas;
- 2 divrindu ķemmes;
- audio DAC ar D klases pastiprinātāju;
- daudzvirzienu digitālais mikrofons.

Kā jau rakstīju iepriekš, šī tāfele man kļuva par galveno, mani iepriecināja spēja strādāt ar skaņu un akselerometru.

Turpmākās nodarbības notiks, pamatojoties uz šo tāfeli.

Kopsavilkums.
Ja nolemjat sākt strādāt ar STM atkļūdošanas dēļiem, tad iesaku ņemt STM32F4DISCOVERY, manuprāt, tam ir vislielākā funkcionalitāte. Turpmākie raksti būs īpaši balstīti uz darbu ar to. Tuvākajā laikā tiks rakstīti raksti par šādām tēmām:
- darbs ar GPIO, taimeriem, pārtraukumiem utt.;
- darbs ar UART, SPI, I2C un 1-vadu saskarnēm, izmantojot reālu ierīču piemērus, piemēram, displejus, GPS un GSM moduļus, temperatūras sensorus, saziņu ar datoru, izmantojot RS-232 un daudz ko citu.
Šī cikla pēdējais mērķis ir izveidot STM32F4 paplašināšanas plati. Visa programmaparatūra un shēmu shēmas būs publiski pieejamas.