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.
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".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.