Hallo,
laut Datenblatt hat der 48Pinner im NVIC einen "Timer 6 Global
Interrupt". Benutze ich aber die StdPeriphLibs mit der Option MD (Medium
Density), so wie von Embitz bei der Auswahl der CPU vorgeschlagen fehlt
die Möglichkeit für Timer 6 dass der einen INT auslöst. Bei anderen CPU
ist das ein "TIM6_DAC_IRQn". Die system_F1xx.c leitet da durch etliche
ifdefs durch und tatsächlich fehlt da der Timer 6 drin als
Interruptquelle. Testweise habe ich mal MD_VL (Value Line) gesetzt aber
erstens funktioniert dieser Int dann auch nicht und zudem läuft die CPU
dann nur noch auf 24 MHz stat auf 72Mhz
Defintion:
- Medium-density (MD) devices are STM32F101xx, STM32F102xx and
STM32F103xx microcontrollers where the Flash memory density ranges
between 64 and 128 Kbytes.
Ist das nun ein Fehler in der Lib?
Idee?
Gruss,
Christian
Timer 6 fehlt!
1
#ifdef STM32F10X_MD
2
ADC1_2_IRQn=18,/*!< ADC1 and ADC2 global Interrupt */
3
USB_HP_CAN1_TX_IRQn=19,/*!< USB Device High Priority or CAN1 TX Interrupts */
4
USB_LP_CAN1_RX0_IRQn=20,/*!< USB Device Low Priority or CAN1 RX0 Interrupts */
hp-freund schrieb:> Laut CubeMX hat dein STM32F103C8T nur Timer1 bis Timer4.
Hast recht.... nur muss man echt suchen, bis man das findet. Steht nur
im Data Sheet mit dem ich kaum arbeite.
Muss mit CubeMX auch mal installieren.
Nochwas: Wenn ich die ExtI_Pin_10-15 benutze, also jene, die sich
mehrere Pins teilen, löst dann auch ein Signalwechsel durch eine
Peripherie einen Int aus? Und wenn nicht, wie kriege ich raus welcher
Pin den Int ausgelöst hat?
Bisher sieht das so aus, PA2. Lieber wäre mir aber ein PBx Port:
Christian J. schrieb:> Hast recht.... nur muss man echt suchen, bis man das findet. Steht nur> im Data Sheet mit dem ich kaum arbeite.
Finde den Fehler....
Die Datenblätter der STM32 haben ziemlich weit vorne eine tabellarische
Übersicht über alle Features und Peripherie der darin behandelten
Controller. Mir ist nicht klar, wie man ohne diese essentielle
Informationen anfangen kann zu entwickeln.
Das Reference Manual überspannt regelmäßig eine riesige Familie an
Controllern und kann dafür nicht herhalten.
Cyblord -. schrieb:> Das Reference Manual überspannt regelmäßig eine riesige Familie an> Controllern und kann dafür nicht herhalten.
Jo, das ist die einzige Stelle wo das steht... das kann man schon mal
übersehen, wenn man den neu erworben hat.
Blöd ist nur: Ich habe die 64kb Version. Release ist derzeit 5kb, Debug
ist schon 21kb (+20kb für sprintf) und wachsend. Da mir noch die Grafik
fehlt platzt mir der Chip schon vorher, oder ich arbeite ohne Debug.
Erstmal grad die 128kb version bei amazon bestellt und die umlöten auf
die Boards.
hp-freund schrieb:> Im EXTI15_10_IRQHandler>> z.B.:>> if(EXTI_GetITStatus(EXTI_Line15) != RESET)
Ok, und löst ein Peripheriesignalwechsel an einem Pin auch einen Int
aus?
Hatte auch kürzlich das Problem...
in der STM32F10x.H steht:
- Medium-density devices are STM32F101xx, STM32F102xx and STM32F103xx
microcontrollers where the Flash memory density ranges between 64 and
128 Kbytes.
- Medium-density value line devices are STM32F100xx microcontrollers
where the Flash memory density ranges between 64 and 128 Kbytes.
- High-density devices are STM32F101xx and STM32F103xx microcontrollers
where the Flash memory density ranges between 256 and 512 Kbytes.
Ich war auch verwöhnt von dem Stm32f4, auf einmal muss man sich wieder
einschränken ;-)
Wenn mC tauschen, dann doch gleich einen High-density. Oder gar einen
Cortex M4 oder sind die nicht mehr Pinkompatibel?
Christian J. schrieb:> Ok, und löst ein Peripheriesignalwechsel an einem Pin auch einen Int> aus?
Ich würde sagen ja, auch wenn ich es bis jetzt noch nicht ausprobiert
habe.
Im Manual CD00171190.pdf ist das in 10.2, der EXTI beschrieben. Da kann
man sich durch die nötigen Register hangeln.
Oder man fragt den Würfel: da kann man für die GPIOs den GPIO_EXTIn als
Funktion auswählen. In Configuration/GPIO wählt man per Dialog die
Flanke und Pull up/down aus, dann noch im NVIC den EXTI als aktiv
markieren. Das generiert dann zB für PC13 als Int und PA9 als einfachen
Output:
1
// stm32f1xx_it.c
2
/**
3
* @brief This function handles EXTI line[15:10] interrupts.
Nils P. schrieb:> Ich war auch verwöhnt von dem Stm32f4, auf einmal muss man sich wieder> einschränken ;-)>> Wenn mC tauschen, dann doch gleich einen High-density. Oder gar einen> Cortex M4 oder sind die nicht mehr Pinkompatibel?
Weiss ich nicht. Klar, weniger Fläche für LQFP48, daher weniger von
allem. Von 14 Timern war ich auch verwöhnt, man hats ja, einen für die
Uhr, einen für die Sensorabstaster, einer saugt, der andere spült :-)
Davon muss man sich verabschieden.
Ich habe die f103 genommen, weil es die für 7 Euro im DIP40 Format für
Lochraster gibt, 32 Bit Rechenpower + C99 GCC Compiler (statt blöder
8bit für PIC) und die eben sehr handlich sind um die Platine an die Wand
zu nageln als Barometer. Port Expansion mit 74HCT595, dann kommt man gut
hin.
Das erste problem ist leider schon da: Debug Code wächst schnell an, mit
Libs (ein schlankes sprintf habe ich woanders geklaut) sind es schon
45kb. Relase nur 12kb. D.h. die 64kb Grenze werde ich schnell erreichen
wenn ich die Grafik fürs ILI9341 und Fonts noch reinhole. Daher bei
Amazon die 128kb Chips "CB" statt "C8" bestellt.
@Jojo S. CubeMx finde ich noch etwas kryptisch, evtl. melde ich mich
dazu nochmal wie man Code erzeugt und wie man alles zurücksetzt usw.
Cyblord -. schrieb:> Debugge doch einfach direkt mit einem Debugger dann brauchst du nicht so> viel sprintf Ausgaben. Und du kannst dir JEDE Variable direkt anschauen.
Tu ich ja ... sprintf ist nur fürs Display. Semihosting funktioniert
zwar auf dem F103 aber wer braucht das schon wirklich? Der KOmfort
Debugger bei EmBitz kann fast alles, nur nicht tracen. Allerdings knallt
die Codegröße sofort hoch, sobald das erste float da ist und dann ein
Sinus noch und ruckzuck ist die Hütte voll.