stm — STM32-mikro-ohjaimille ominaiset toiminnot¶
Tämä moduuli tarjoaa STM32-mikro-ohjaimille ominaisia toimintoja, mukaan lukien suoran pääsyn oheislaitteiden rekistereihin.
Muistinkäyttö¶
Moduuli paljastaa kolme indeksoitavaa objektia raakaa muistinkäyttöä varten. Kukin käyttäytyy kuin harva taulukko, joka indeksoidaan tavuosoitteella: value = memN[addr] lukee, memN[addr] = value kirjoittaa. Osoite on aina tavuosoite riippumatta käytön leveydestä.
Näitä muistiobjekteja voidaan käyttää yhdessä alla olevien oheislaitteiden rekisterivakioiden kanssa MCU:n laitteisto-oheislaitteiden rekisterien lukemiseen ja kirjoittamiseen sekä minkä tahansa muun SoC:n osoiteavaruuden sijainnin käsittelyyn.
- stm.mem8¶
Indeksoitava 8-bittinen muistinkäyttöobjekti.
mem8[addr]lukeeint-arvon väliltä 0–255 tavusta osoitteessaaddr;mem8[addr] = valuekirjoittaavalue-arvon alimmat 8 bittiä.addrvoi olla mikä tahansa tavukohdistettu osoite.
- stm.mem16¶
Indeksoitava 16-bittinen (puolisana) muistinkäyttöobjekti.
mem16[addr]lukeeint-arvon väliltä 0–65535;mem16[addr] = valuekirjoittaa alimmat 16 bittiä.addron kohdistettava 2 tavuun.
- stm.mem32¶
Indeksoitava 32-bittinen (sana) muistinkäyttöobjekti.
mem32[addr]lukeeint-arvon väliltä 0–0xFFFFFFFF;mem32[addr] = valuekirjoittaa alimmat 32 bittiä.addron kohdistettava 4 tavuun.
Oheislaitteiden rekisterivakiot¶
stm-moduuli paljastaa täyden joukon CMSIS-rekisteriosoitteita ja -siirtymiä sille STM32-perheelle, jolle laiteohjelmisto käännettiin. Nimet vastaavat tarkalleen ST:n CMSIS-otsikkotiedostoja: STM32F427xx, STM32F765xx, STM32H743xx ja STM32N657xx M4-, M7-, H7-perheen (H7 / H7 Plus / Pure Thermal) ja N6 OpenMV Cam -laitteilla. Koko nimijoukko on useita satoja symboleja perhettä kohden (271 M4:llä, 306 M7:llä, 494 H7:llä, 594 N6:lla); niiden luetteleminen tässä yksinkertaisesti toistaisi ST:n viiteoppaan ja CMSIS-otsikkotiedostot.
Käytössä on kaksi nimeämiskäytäntöä:
Oheislaiteinstanssin mukaan nimetyt vakiot (
GPIOA,USART1,TIM2, …) ovat absoluuttisia perusosoitteita.Oheislaitetyypin etuliitteellä varustetut vakiot (
GPIO_BSRR,USART_CR1,TIM_CCR1, …) ovat rekisterisiirtymiä suhteessa vastaavaan perusosoitteeseen.
Laske yhteen absoluuttinen perusosoite ja rekisterisiirtymä saadaksesi yksittäisen rekisterin täyden osoitteen. Esimerkiksi stm.GPIOA + stm.GPIO_BSRR on GPIOA->BSRR-rekisterin absoluuttinen osoite.
Esimerkki:
import stm
# set PA2 high
stm.mem32[stm.GPIOA + stm.GPIO_BSRR] = 1 << 2
# read PA3
value = (stm.mem32[stm.GPIOA + stm.GPIO_IDR] >> 3) & 1
Edustavat vakiot¶
Alla oleva valikoima kattaa yhden merkinnän kutakin pääoheislaiteryhmää kohden, valittuna siten, että nimeämiskäytäntö on selkeä yhdellä silmäyksellä. Jokainen muukin käännöskohteen CMSIS-symboli on myös käytettävissä moduulissa – katso __getattr__() alta tyypintarkistimen varatoiminto.
- stm.GPIOA: int¶
GPIOA-oheislaitteen perusosoite.GPIOB…GPIOK(väli riippuu MCU:n kotelosta) noudattavat samaa kaavaa.
- stm.USART1: int¶
USART1-oheislaitteen perusosoite. Muut USART-/UART-instanssit paljastetaan nimilläUSART2,USART3,UART4… saatavuuden mukaan.
- stm.SPI1: int¶
SPI1-oheislaitteen perusosoite. Lisä-SPI-instanssit näkyvät nimilläSPI2,SPI3, … MCU:n lukumäärään asti.
- stm.TIM1: int¶
TIM1-edistyneen ohjausajastimen perusosoite. Yleiskäyttöiset ja perusajastimet (TIM2…TIM17saatavuuden mukaan) noudattavat samaa nimeämistä.
- stm.DMA1: int¶
DMA1:n perusosoite.DMA2on läsnä useimmissa STM32:ssa; H7-luokan osat paljastavat myösBDMA-,MDMA- ja (N6:lla)HPDMA/GPDMA-toiminnot.
- stm.GPIO_BSRR: int¶
GPIO:n bit set/reset -rekisterin siirtymä minkä tahansa
GPIOx-perusosoitteen sisällä.
- stm.TIM_CCR1: int¶
Ajastimen kaappaus-/vertailurekisterin 1 siirtymä.
TIM_CCR2…TIM_CCR4seuraavat ajastimissa, joissa on useita kanavia.
- stm.__getattr__(name: str) int¶
Dynaamisen attribuutin varatoiminto: mikä tahansa laiteohjelmiston paljastama CMSIS-symboli, jota ei ole erikseen lueteltu yllä (esim.
stm.FDCAN1,stm.OCTOSPI1,stm.GPIO_AFR, erilaiset bittikentän siirrot ja maskit, …), ratkeaa silti absoluuttiseksi osoitteekseen tai siirtymäkseenint-tyyppisenä.Ajonaikainen moduuli täyttää nämä symbolit suoraan globaalimuuttujien sanakirjaansa tuontihetkellä, joten
__getattr__ei koskaan todellisuudessa tule kutsutuksi. Allekirjoitus paljastetaan ainoastaan, jotta staattiset tyypintarkistimet (Pyright, Pylance, mypy) hyväksyvätstm.<any CMSIS name>ilman ”module has no attribute” -varoitusta.