CMSIS => Werden keine Bitnamen benutzt?

Gast #1536303
Hallo,

ich suche mir gerade etwas über CMSIS-Zeugs zusammen. Sehe ich das 
richtig, daß es dort keine Bitnamen gibt, sondern nur magic numbers 
verwendet werden? So wie
LPC_RTC -> CIIR |= 0x02;
oder
LPC_RTC -> ILR = (1<<1);
statt
LPC_RTC -> CIIR |= (1<<IMMIN);
Das wäre ja äußerst unschön; gerade hatte ich mich an sprechende 
Bitnamen gewöhnt (und diese auch schätzen gelernt).

Btw: Kann man bei der RTC des LPC17xx tatsächlich nur auswerten, daß ein 
Increment-Interrupt da war, aber nicht welcher? Wäre auch schlecht, denn 
wenn ich Interrupts bei Increment Minute (Temperaturmessung) und 
Increment Stunde (Übertrage die letzten Meßwerte und prüfe dabei 
Verbindung) aktiviere, kann ich die Interrupts ja gar nicht 
unterscheiden und indivuduell handlen (und bitte nicht den Tip mit 
Variable bis 60 zählen und dann ..)
Hallo Gastel,

die Bitnamen gibt es so in dieser Form nicht. Allerdings gibt es z.B. in 
der STMStdPeripherial Library Bitmasken für das setzen bestimmter 
Optionen, was eigentlich noch viel praktischer ist (ok, Ansichtssache).

Z.B. hier in der stm32f10x_adc.h:
1
/** @defgroup ADC_mode 
2
  * @{
3
  */
4

5
#define ADC_Mode_Independent                       ((uint32_t)0x00000000)
6
#define ADC_Mode_RegInjecSimult                    ((uint32_t)0x00010000)
7
#define ADC_Mode_RegSimult_AlterTrig               ((uint32_t)0x00020000)
8
#define ADC_Mode_InjecSimult_FastInterl            ((uint32_t)0x00030000)
9
#define ADC_Mode_InjecSimult_SlowInterl            ((uint32_t)0x00040000)
10
#define ADC_Mode_InjecSimult                       ((uint32_t)0x00050000)
11
#define ADC_Mode_RegSimult                         ((uint32_t)0x00060000)
12
#define ADC_Mode_FastInterl                        ((uint32_t)0x00070000)
13
#define ADC_Mode_SlowInterl                        ((uint32_t)0x00080000)
14
#define ADC_Mode_AlterTrig                         ((uint32_t)0x00090000)

Die kann man dann zur Initialisierung mit den Init-Structs verwenden.
Gast
Danke Oliver,

aber das scheint dann ja STM-spezifisch zu sein (und nicht einheitlich 
durch/in CMSIS geregelt). Ich hatte CMSIS, zumindest überwiegend, als 
Grundlage verstanden; die Gruppe "RTC" für die Real Time Clock z.B. wird 
in CMSIS einheitlich so genannt. Wenn ein Hersteller das bei sich intern 
"Suppenverbieger_td3" nennt darf er das ruhig, er muß nur eine (seine 
spezifische) .h-Datei nach dem Motto
#define RTC Suppenverbieger_td3
liefern, welche diese kranke Bezeichnung vor dem Programmierer verbirgt 
(klar sind da dann konkrete Register in einer Registergruppe).

Leider habe ich wohl bisher zu oberflächlich geschaut. Andererseits 
meine ich genau so eine Aussage z.B. von Herrn Keil gelesen zu haben. 
Weil wenn dem nicht so ist, ist das mit der Vereinheitlichung auch nur 
"halber Kram".

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.