Modul stm --- fungsionalitas khusus untuk MCU STM32¶
Modul ini menyediakan fungsionalitas khusus untuk mikrokontroler STM32, termasuk akses langsung ke register periferal.
Akses memori¶
Modul ini mengekspos tiga objek yang dapat disubskrip yang digunakan untuk akses memori mentah. Masing-masing berperilaku seperti array jarang yang diindeks berdasarkan alamat byte: value = memN[addr] untuk membaca, memN[addr] = value untuk menulis. Alamat selalu merupakan alamat byte, terlepas dari lebar akses.
Objek memori ini dapat digunakan bersama dengan konstanta register periferal di bawah ini untuk membaca dan menulis register periferal perangkat keras MCU, serta lokasi lain mana pun dalam ruang alamat SoC.
- stm.mem8¶
Aksessor memori 8-bit yang dapat disubskrip.
mem8[addr]membacaintdalam rentang 0-255 dari byte diaddr;mem8[addr] = valuemenulis 8 bit rendah darivalue.addrdapat berupa alamat byte yang sejajar mana pun.
- stm.mem16¶
Aksessor memori 16-bit (halfword) yang dapat disubskrip.
mem16[addr]membacaintdalam rentang 0-65535;mem16[addr] = valuemenulis 16 bit rendah.addrharus sejajar dengan 2 byte.
- stm.mem32¶
Aksessor memori 32-bit (word) yang dapat disubskrip.
mem32[addr]membacaintdalam rentang 0-0xFFFFFFFF;mem32[addr] = valuemenulis 32 bit rendah.addrharus sejajar dengan 4 byte.
Konstanta register periferal¶
Modul stm mengekspos kumpulan lengkap alamat register CMSIS dan offset untuk keluarga STM32 tempat firmware dikompilasi. Nama-namanya mencerminkan header CMSIS ST secara persis: STM32F427xx, STM32F765xx, STM32H743xx, dan STM32N657xx pada keluarga M4, M7, H7 (H7 / H7 Plus / Pure Thermal) dan OpenMV Cam N6 masing-masing. Kumpulan nama lengkap terdiri dari beberapa ratus simbol per keluarga (271 pada M4, 306 pada M7, 494 pada H7, 594 pada N6); menghitung semuanya di sini hanya akan menduplikasi manual referensi ST dan header CMSIS.
Dua konvensi penamaan digunakan:
Konstanta yang dinamai setelah instans periferal (
GPIOA,USART1,TIM2, ...) adalah alamat basis absolut.Konstanta yang diawali dengan tipe periferal (
GPIO_BSRR,USART_CR1,TIM_CCR1, ...) adalah offset register relatif terhadap basis yang sesuai.
Tambahkan alamat basis absolut dan offset register untuk mendapatkan alamat lengkap dari satu register. Misalnya stm.GPIOA + stm.GPIO_BSRR adalah alamat absolut dari GPIOA->BSRR.
Contoh:
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
Konstanta representatif¶
Seleksi di bawah ini mencakup satu entri per kategori periferal utama, dipilih agar konvensi penamaan jelas sekilas. Setiap simbol CMSIS lain untuk target build juga tersedia di modul -- lihat __getattr__() di bawah ini untuk fallback pemeriksaan tipe.
- stm.GPIOA: int¶
Alamat basis periferal
GPIOA.GPIOB...GPIOK(rentang tergantung pada paket MCU) mengikuti pola yang sama.
- stm.USART1: int¶
Alamat basis periferal
USART1. Instans USART / UART lainnya diekspos di bawahUSART2,USART3,UART4... sesuai ketersediaan.
- stm.SPI1: int¶
Alamat basis periferal
SPI1. Instans SPI tambahan muncul sebagaiSPI2,SPI3, ... hingga jumlah MCU.
- stm.TIM1: int¶
Alamat basis timer kontrol lanjutan
TIM1. Timer tujuan umum dan dasar (TIM2...TIM17sesuai ketersediaan) mengikuti penamaan yang sama.
- stm.DMA1: int¶
Alamat basis
DMA1.DMA2tersedia pada sebagian besar STM32; komponen kelas H7 juga mengeksposBDMA,MDMA, dan (pada N6)HPDMA/GPDMA.
- stm.TIM_CCR1: int¶
Offset register capture/compare timer 1.
TIM_CCR2...TIM_CCR4mengikuti pada timer yang memiliki beberapa saluran.
- stm.__getattr__(name: str) int¶
Fallback atribut dinamis: simbol CMSIS apa pun yang diekspos oleh firmware yang tidak terdaftar secara individual di atas (misalnya
stm.FDCAN1,stm.OCTOSPI1,stm.GPIO_AFR, berbagai pergeseran dan mask bit-field, ...) tetap dapat di-resolve ke alamat absolut atau offset-nya sebagaiint.Modul runtime mengisi simbol-simbol ini langsung ke dalam dict globals-nya saat import, sehingga
__getattr__tidak pernah benar-benar dipanggil. Tanda tangan ini diekspos semata-mata agar pemeriksaan tipe statis (Pyright, Pylance, mypy) menerimastm.<any CMSIS name>tanpa diagnostik "modul tidak memiliki atribut".