erik_wolfram
22.02.2016, 14:18
Hallo,
ich beschäftige mich seid einigen Monaten mit einem STM32F407VGT Discovery-Board. Nach vielem Programmieren stolpere ich doch öfters über Probleme mit dem DAC. Teilweise bekomme ich diesen nicht initialisiert, bzw. ist dieser diesbezüglich ziehmlich störrisch.
Als neustes habe ich ein Problem das mir zu rästeln aufgibt. Initialisiere ich den PIN für den DAC innerhalb der Main läuft alles. Packe ich die Initialisierung des PINs mit in die Initialisierungsfunktion des DACs läuft dieser nicht mehr. Ich konnte das Problem mittlerweile auf die Initialisierung des PINs begrenzen, komme damit aber nicht weiter. Auch wenn ich die Initialisierung anderer PINs mit der gleichen Initialisierungs-Struktur mit in die Funktion packe läuft es nicht.
Ich bin ganzschön ratlos. Da mein Programm immer mächtiger wird möchte ich die Main der Übersicht halber gerne vereinfachen um noch durchsehen zu können.
Die Ausgabe des DACs soll über den Channel2 am Pin PA5 erfolgen - und das funktioniert ja mit der jetzigen initialisierung...
Hier mal der Code:
main:
...
GPIO_InitTypeDef GPIO_InitStructure;
...
// Der Code darf nicht in die Funktion init_DAC ????
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init( GPIOA, &GPIO_InitStructure );
// Hier die eigentliche Initialisierung:
init_DAC();
...
init_DAC():
void init_DAC()
{
// Enable DAC clock
RCC_APB1PeriphClockCmd( RCC_APB1ENR_DACEN, ENABLE );
DAC_InitTypeDef DAC_InitStruct;
DAC_InitStruct.DAC_Trigger = DAC_Trigger_None;
DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init( DAC_Channel_2, &DAC_InitStruct );
// Enable DAC Channel 1
DAC_Cmd( DAC_Channel_2, ENABLE );
}
Arbeiten tue ich mich CooCox IDE ohne Optimierung.
Ich denke/hoffe es handelt sich hier nur um eine Kleinigkeit, die ich einfach übersehen.
Ich bin für jede Hilfestellung dankbar!
Gruß Erik
ich beschäftige mich seid einigen Monaten mit einem STM32F407VGT Discovery-Board. Nach vielem Programmieren stolpere ich doch öfters über Probleme mit dem DAC. Teilweise bekomme ich diesen nicht initialisiert, bzw. ist dieser diesbezüglich ziehmlich störrisch.
Als neustes habe ich ein Problem das mir zu rästeln aufgibt. Initialisiere ich den PIN für den DAC innerhalb der Main läuft alles. Packe ich die Initialisierung des PINs mit in die Initialisierungsfunktion des DACs läuft dieser nicht mehr. Ich konnte das Problem mittlerweile auf die Initialisierung des PINs begrenzen, komme damit aber nicht weiter. Auch wenn ich die Initialisierung anderer PINs mit der gleichen Initialisierungs-Struktur mit in die Funktion packe läuft es nicht.
Ich bin ganzschön ratlos. Da mein Programm immer mächtiger wird möchte ich die Main der Übersicht halber gerne vereinfachen um noch durchsehen zu können.
Die Ausgabe des DACs soll über den Channel2 am Pin PA5 erfolgen - und das funktioniert ja mit der jetzigen initialisierung...
Hier mal der Code:
main:
...
GPIO_InitTypeDef GPIO_InitStructure;
...
// Der Code darf nicht in die Funktion init_DAC ????
RCC_AHB1PeriphClockCmd( RCC_AHB1Periph_GPIOA, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init( GPIOA, &GPIO_InitStructure );
// Hier die eigentliche Initialisierung:
init_DAC();
...
init_DAC():
void init_DAC()
{
// Enable DAC clock
RCC_APB1PeriphClockCmd( RCC_APB1ENR_DACEN, ENABLE );
DAC_InitTypeDef DAC_InitStruct;
DAC_InitStruct.DAC_Trigger = DAC_Trigger_None;
DAC_InitStruct.DAC_WaveGeneration = DAC_WaveGeneration_None;
DAC_InitStruct.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
DAC_Init( DAC_Channel_2, &DAC_InitStruct );
// Enable DAC Channel 1
DAC_Cmd( DAC_Channel_2, ENABLE );
}
Arbeiten tue ich mich CooCox IDE ohne Optimierung.
Ich denke/hoffe es handelt sich hier nur um eine Kleinigkeit, die ich einfach übersehen.
Ich bin für jede Hilfestellung dankbar!
Gruß Erik