stm32F103C8xx iso tai pieni endian?

onko stm32F103C8xx: lle syytä olla iso endiani ja onko mahdollista vaihtaa pieneksi endianiksi?

Minulla on 16-bittinen suuntautuminen osoitekaavio, joka minun on lähetettävä langan kautta ja toisella puolella, odottaa ensin MSB: tä. Onko sinulla muita ehdotuksia?

Jos haluat vastata siihen, miten teen sen, tässä on menetelmä (joka ei tietenkään vastaa kysymykseen).

typedef union ___address{ uint16_t address; uint8_t addr_byte[2] ; } my_addr; 

Käytä sitä vain kahdesti 8-bittisenä päinvastaisessa järjestyksessä, my_addr.addr_byte [1] ja sitten my_addr.addr_byte [0].

Kommentit

  • Miksi ei tavunvaihtoa ennen lähettämistä?
  • Teet jo sen, mutta halusin vain tietää, onko se ' mahdollista.
  • SETEND LE näyttää suorittavan työn.
  • Kuinka lähetät bittiä?

vastaus

STM32F103 käyttää muistissa pienen endian-muotoa, kuten ohjelmointikäsikirja sivulla 30 . Tämä on myös kokemukseni, koska minun ei tarvitse vaihtaa tavuja vaihdettaessa numeroita tietokoneeni kanssa (joka on tietysti pieni endialainen kone).

Myös kuten Cortex M ARM-tietosivulla on selitetty 3 ei tue dynaamista endianiteettikytkentää, joten olet kiinni kaikessa, mitä valmistaja pitää oikeana.

Voit tarkistaa AIRCR.ENDIANNESS-bitin vain ollaksesi 100% varma. Jos se lukee 0, se on pienen endian muisti, jos se on 1, se käyttää big-endiania.

Jos kohtaat suorituskykyongelmia tavujen vaihdon takia, saatat pystyä kiertämään ne käyttämällä REV-, REV16- ja REVSH-kokoonpano-ohjeita (tiedä, tekeekö kääntäjäsi tämän jo itsestään).

Kommentit

  • + 1 linkittämiseksi suoraan mainittuun sivuun. En tiennyt ' tiennyt, että voisit tehdä niin.

Vastaa

Kaikki STM32-MCU: t (ja todellakin useimmat ARM Cortex-M MCU: t yleensä) ovat pienikokoisia.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *