STM32 C und ASM

OP #1830838
Lesenswert?
• ▲
▼
Hallo zusammen,

ich würde gerne zum Verständniss einen kurzen Teil in meinem C Programm 
mit Inline Assembler schreiben. Leider finde ich hierzu keinerlei 
Beispiele und hoffe, dass jemand von euch evtl eins kennt. Also z.b. 
einfach nur einen Pin zu setzen. Mit C mache ich das ja mit
GPIOE->BSRR = GPIO_Pin_4; nur wie würde das mit ASM gehen? Kann ich dann 
auch die einzelnen bits im Register direkt ansprechen? Also z.b. BS4 = 1
Ich arbeite mit der µVision 4 IDE von Keil

Gruß
Mathias
(Firma: Safety Control GmbH) #1830981
Lesenswert?
• ▲
▼
Du kannst bestimmt bei deiner IDE bzw. dem C-Compiler die 
Listing-Ausgabe aktivieren. Dadurch wird der vom C-Compiler generierte 
Assembler-Code mit den dazu gehörenden C-Kommandos als Kommentar 
ausgegeben.
Dann musst du nur noch deinen C-Code compilieren und siehst, was der 
Compiler daraus gemacht hat.

Beim IAR-WorkBench findet man die Einstellung bei den
Projekteinstellungen->C/C++ Compiler.->List
[x] Output list file
    [x] Assembler mnemonics
[x] Output assembler file
    [x] Include source.

Wird beim Keil wohl ähnlich sein.

Das Ansprechen von einzelnen Bits in Registern findest du im Datenblatt 
unter dem Stichwort Bitbanding. Wenn du aber mehrere Bits im Register 
bearbeiten möchtest, könnte das Lesen/Ändern/Zurückschreiben des ganzen 
Registers schneller sein.

Grus
   Simon
#1831014
Lesenswert?
• ▲
▼
Nach BSRR schreiben. Einsen in den oberen 16 Bits löschen Portbits, 
Einsen in den unteren setzen sie. Setzen gewinnt. Wenn man also in die 
oberen 16 Bits die Bitmaske schreibt, kann man mit den unteren 16 Bits 
den gewünschten Zustand dieser Bits schreiben ohne den Rest zu 
beeinflussen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.