diff --git a/Makefile b/Makefile index f3f3ddbe..d3e33a0e 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ # put your *.o targets here, make should handle the rest! -SRCS = main.c stm32f4xx_it.c system_stm32f4xx.c printf.c scanf.c param.c stm32_ub_dac_dma.c setup.c stm32_ub_encoder_tim3.c pid.c +SRCS = main.c stm32f4xx_it.c system_stm32f4xx.c printf.c scanf.c param.c setup.c stm32_ub_encoder_tim3.c pid.c #USB SRCS += ub_lib/stm32_ub_usb_cdc.c ub_lib/usb_cdc_lolevel/usb_core.c ub_lib/usb_cdc_lolevel/usb_dcd_int.c ub_lib/usb_cdc_lolevel/usbd_req.c ub_lib/usb_cdc_lolevel/usbd_cdc_core.c ub_lib/usb_cdc_lolevel/usbd_core.c ub_lib/usb_cdc_lolevel/usb_dcd.c ub_lib/usb_cdc_lolevel/usbd_cdc_vcp.c ub_lib/usb_cdc_lolevel/usbd_desc.c ub_lib/usb_cdc_lolevel/usbd_ioreq.c ub_lib/usb_cdc_lolevel/usb_bsp.c ub_lib/usb_cdc_lolevel/usbd_usr.c #SRCS = main.c system.c diff --git a/src/stm32_ub_dac_dma.c b/src/stm32_ub_dac_dma.c deleted file mode 100755 index 4f681447..00000000 --- a/src/stm32_ub_dac_dma.c +++ /dev/null @@ -1,390 +0,0 @@ -//-------------------------------------------------------------- -// File : stm32_ub_dac_dma.c -// Datum : 25.03.2013 -// Version : 1.1 -// Autor : UB -// EMail : mc-4u(@)t-online.de -// Web : www.mikrocontroller-4u.de -// CPU : STM32F4 -// IDE : CooCox CoIDE 1.7.0 -// Module : GPIO, DAC, TIM, DMA -// Funktion : DA-Wandler (DAC1 und DAC2) per DMA1 -// -// Hinweis : DAC1-Ausgang an PA4 -// DAC2-Ausgang an PA5 -//-------------------------------------------------------------- - - -//-------------------------------------------------------------- -// Includes -//-------------------------------------------------------------- -#include "stm32_ub_dac_dma.h" - - - -//-------------------------------------------------------------- -// Globale Variable -//-------------------------------------------------------------- -DAC_InitTypeDef DAC_InitStructure; // MUSS Global sein (BUGFIX) -DAC_DMA_MODE_t akt_dac_dma_mode; - - - -//-------------------------------------------------------------- -// interne Funktionen -//-------------------------------------------------------------- -void P_DAC_DMA_InitIO1(void); -void P_DAC_DMA_InitTIM1(void); -void P_DAC_DMA_InitDAC1(void); -void P_DAC_DMA_InitIO2(void); -void P_DAC_DMA_InitTIM2(void); -void P_DAC_DMA_InitDAC2(void); - - - -//-------------------------------------------------------------- -// standard Kurvenform für DAC=AUS -//-------------------------------------------------------------- -const uint16_t WaveOff[] = {0}; // Dauer Lo-Pegel - - -//-------------------------------------------------------------- -// Kurvenform die Ausgegeben werden soll als Array -// von 12bit Werten (0 bis 4095) -//-------------------------------------------------------------- -const uint16_t Wave1[] = { // Sinus - 2047, 2447, 2831, 3185, 3498, 3750, 3939, 4056, - 4095, 4056, 3939, 3750, 3495, 3185, 2831, 2447, - 2047, 1647, 1263, 909, 599, 344, 155, 38, - 0, 38, 155, 344, 599, 909, 1263, 1647 -}; - - -//-------------------------------------------------------------- -// Kurvenform die Ausgegeben werden soll als Array -// von 12bit Werten (0 bis 4095) -//-------------------------------------------------------------- -const uint16_t Wave2[] = { // Sägezahn - 0, 256, 512, 768, 1024, 1280, 1536, 1792, - 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840, - 4095 -}; - - -//-------------------------------------------------------------- -// Kurvenform die Ausgegeben werden soll als Array -// von 12bit Werten (0 bis 4095) -//-------------------------------------------------------------- -const uint16_t Wave3[] = { // Dreieck - 0, 256, 512, 768, 1024, 1280, 1536, 1792, - 2048, 2304, 2560, 2816, 3072, 3328, 3584, 3840, - 4095, 3840, 3584, 3328, 3072, 2816, 2560, 2304, - 2048, 1792, 1536, 1280, 1024, 768, 512, 256 -}; - - -//-------------------------------------------------------------- -// Kurvenform die Ausgegeben werden soll als Array -// von 12bit Werten (0 bis 4095) -//-------------------------------------------------------------- -const uint16_t Wave4[] = { // Rechteck - 0, 0, 4095, 4095 -}; - - -//-------------------------------------------------------------- -// Definition aller Kurvenformen -// Reihenfolge wie bei DAC_DMA_WAVE_NAME_t -//-------------------------------------------------------------- -const DAC_WAVE_t DAC_WAVE[] = { - // Name , Kurve , Länge - {DAC_WAVE_OFF , WaveOff, 1}, - {DAC_WAVE1_SINUS , Wave1 , 32}, - {DAC_WAVE2_SAEGEZAHN, Wave2 , 17}, - {DAC_WAVE3_DREIECK , Wave3 , 32}, - {DAC_WAVE4_RECHTECK , Wave4 , 4}, -}; - - - - -//-------------------------------------------------------------- -// init vom DA-Wandler im DMA-Mode -// mode : [SINGLE_DAC1_DMA, SINGLE_DAC2_DMA, DUAL_DAC_DMA] -//-------------------------------------------------------------- -void UB_DAC_DMA_Init(DAC_DMA_MODE_t mode) -{ - // DAC-Mode speichern - akt_dac_dma_mode=mode; - - if((mode==SINGLE_DAC1_DMA) || (mode==DUAL_DAC_DMA)) { - P_DAC_DMA_InitIO1(); - P_DAC_DMA_InitTIM1(); - P_DAC_DMA_InitDAC1(); - UB_DAC_DMA_SetWaveform1(DAC_WAVE_OFF); - } - if((mode==SINGLE_DAC2_DMA) || (mode==DUAL_DAC_DMA)) { - P_DAC_DMA_InitIO2(); - P_DAC_DMA_InitTIM2(); - P_DAC_DMA_InitDAC2(); - UB_DAC_DMA_SetWaveform2(DAC_WAVE_OFF); - } -} - - -//-------------------------------------------------------------- -// stellt eine Kurvenform für DAC1 ein -//-------------------------------------------------------------- -void UB_DAC_DMA_SetWaveform1(DAC_DMA_WAVE_NAME_t wave) -{ - DMA_InitTypeDef DMA_InitStructure; - - if(akt_dac_dma_mode==SINGLE_DAC2_DMA) return; // wenn nicht erlaubt - - // Clock Enable (DMA) - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); - - // DMA init (DMA1, Channel7, Stream5) - DMA_Cmd(DMA1_Stream5, DISABLE); - DMA_DeInit(DMA1_Stream5); - DMA_InitStructure.DMA_Channel = DMA_Channel_7; - DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)DAC1_DHR_12R1_ADDRESS; - DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DAC_WAVE[wave].ptr; - DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; - DMA_InitStructure.DMA_BufferSize = DAC_WAVE[wave].wave_len; - DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; - DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; - DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; - DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; - DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; - DMA_InitStructure.DMA_Priority = DMA_Priority_High; - DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; - DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; - DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; - DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; - DMA_Init(DMA1_Stream5, &DMA_InitStructure); - - // DMA enable - DMA_Cmd(DMA1_Stream5, ENABLE); - // DMA-DAC enable - DAC_DMACmd(DAC_Channel_1, ENABLE); -} - - -//-------------------------------------------------------------- -// stellt eine Kurvenform für DAC2 ein -//-------------------------------------------------------------- -void UB_DAC_DMA_SetWaveform2(DAC_DMA_WAVE_NAME_t wave) -{ - DMA_InitTypeDef DMA_InitStructure; - - if(akt_dac_dma_mode==SINGLE_DAC1_DMA) return; // wenn nicht erlaubt - - // Clock Enable (DMA) - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA1, ENABLE); - - // DMA init (DMA1, Channel7, Stream6) - DMA_Cmd(DMA1_Stream6, DISABLE); - DMA_DeInit(DMA1_Stream6); - DMA_InitStructure.DMA_Channel = DMA_Channel_7; - DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)DAC2_DHR_12R2_ADDRESS; - DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DAC_WAVE[wave].ptr; - DMA_InitStructure.DMA_DIR = DMA_DIR_MemoryToPeripheral; - DMA_InitStructure.DMA_BufferSize = DAC_WAVE[wave].wave_len; - DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; - DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; - DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; - DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; - DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; - DMA_InitStructure.DMA_Priority = DMA_Priority_High; - DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; - DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; - DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; - DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; - DMA_Init(DMA1_Stream6, &DMA_InitStructure); - - // DMA enable - DMA_Cmd(DMA1_Stream6, ENABLE); - // DMA-DAC enable - DAC_DMACmd(DAC_Channel_2, ENABLE); -} - - -//-------------------------------------------------------------- -// stellt die Frequenz für DAC1 ein -// Grundfrequenz = 2*APB1 (APB1=42MHz) => TIM_CLK=84MHz -// vorteiler : 0 bis 0xFFFF -// periode : 0 bis 0xFFFF -// -// Ausgangs-Frq = TIM_CLK/(vorteiler+1)/(periode+1)/wave_len -//-------------------------------------------------------------- -void UB_DAC_DMA_SetFrq1(uint16_t vorteiler, uint16_t periode) -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - - if(akt_dac_dma_mode==SINGLE_DAC2_DMA) return; // wenn nicht erlaubt - - // Timer-Config - TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); - TIM_TimeBaseStructure.TIM_Period = periode; - TIM_TimeBaseStructure.TIM_Prescaler = vorteiler; - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; - TIM_TimeBaseInit(DAC_TIM1_NAME, &TIM_TimeBaseStructure); -} - - -//-------------------------------------------------------------- -// stellt die Frequenz für DAC2 ein -// Grundfrequenz = 2*APB1 (APB1=42MHz) => TIM_CLK=84MHz -// vorteiler : 0 bis 0xFFFF -// periode : 0 bis 0xFFFF -// -// Ausgangs-Frq = TIM_CLK/(vorteiler+1)/(periode+1)/wave_len -//-------------------------------------------------------------- -void UB_DAC_DMA_SetFrq2(uint16_t vorteiler, uint16_t periode) -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - - if(akt_dac_dma_mode==SINGLE_DAC1_DMA) return; // wenn nicht erlaubt - - // Timer-Config - TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); - TIM_TimeBaseStructure.TIM_Period = periode; - TIM_TimeBaseStructure.TIM_Prescaler = vorteiler; - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; - TIM_TimeBaseInit(DAC_TIM2_NAME, &TIM_TimeBaseStructure); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom IO-Pin für DAC1 -//-------------------------------------------------------------- -void P_DAC_DMA_InitIO1(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - - // Clock Enable (GPIO) - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); - - // Config des DAC-Pins als Analog-Ausgang - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; - GPIO_Init(GPIOA, &GPIO_InitStructure); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom IO-Pin für DAC2 -//-------------------------------------------------------------- -void P_DAC_DMA_InitIO2(void) -{ - GPIO_InitTypeDef GPIO_InitStructure; - - // Clock Enable (GPIO) - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); - - // Config des DAC-Pins als Analog-Ausgang - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ; - GPIO_Init(GPIOA, &GPIO_InitStructure); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom Timer für DAC1 -//-------------------------------------------------------------- -void P_DAC_DMA_InitTIM1(void) -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - - // Clock enable (Timer) - RCC_APB1PeriphClockCmd(DAC_TIM1_CLK, ENABLE); - - // Timer-Config - TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); - TIM_TimeBaseStructure.TIM_Period = DAC_DMA_DEF_PERIODE; - TIM_TimeBaseStructure.TIM_Prescaler = DAC_DMA_DEF_PRESCALE; - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; - TIM_TimeBaseInit(DAC_TIM1_NAME, &TIM_TimeBaseStructure); - - // Trigger - TIM_SelectOutputTrigger(DAC_TIM1_NAME, TIM_TRGOSource_Update); - - // Timer enable - TIM_Cmd(DAC_TIM1_NAME, ENABLE); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom Timer für DAC2 -//-------------------------------------------------------------- -void P_DAC_DMA_InitTIM2(void) -{ - TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; - - // Clock enable (Timer) - RCC_APB1PeriphClockCmd(DAC_TIM2_CLK, ENABLE); - - // Timer-Config - TIM_TimeBaseStructInit(&TIM_TimeBaseStructure); - TIM_TimeBaseStructure.TIM_Period = DAC_DMA_DEF_PERIODE; - TIM_TimeBaseStructure.TIM_Prescaler = DAC_DMA_DEF_PRESCALE; - TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; - TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; - TIM_TimeBaseInit(DAC_TIM2_NAME, &TIM_TimeBaseStructure); - - // Trigger - TIM_SelectOutputTrigger(DAC_TIM2_NAME, TIM_TRGOSource_Update); - - // Timer enable - TIM_Cmd(DAC_TIM2_NAME, ENABLE); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom DAC1 -//-------------------------------------------------------------- -void P_DAC_DMA_InitDAC1(void) -{ - // Clock Enable (DAC) - RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); - - // DAC init - DAC_InitStructure.DAC_Trigger = DAC_TIM1_TRG; - DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; - DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; - DAC_Init(DAC_Channel_1, &DAC_InitStructure); - - // DAC enable - DAC_Cmd(DAC_Channel_1, ENABLE); -} - - -//-------------------------------------------------------------- -// interne Funktion -// Init vom DAC2 -//-------------------------------------------------------------- -void P_DAC_DMA_InitDAC2(void) -{ - // Clock Enable (DAC) - RCC_APB1PeriphClockCmd(RCC_APB1Periph_DAC, ENABLE); - - // DAC init - DAC_InitStructure.DAC_Trigger = DAC_TIM2_TRG; - DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None; - DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable; - DAC_Init(DAC_Channel_2, &DAC_InitStructure); - - // DAC enable - DAC_Cmd(DAC_Channel_2, ENABLE); -} diff --git a/src/stm32_ub_dac_dma.h b/src/stm32_ub_dac_dma.h deleted file mode 100755 index d409eab3..00000000 --- a/src/stm32_ub_dac_dma.h +++ /dev/null @@ -1,169 +0,0 @@ -//-------------------------------------------------------------- -// File : stm32_ub_dac_dma.h -//-------------------------------------------------------------- - -//-------------------------------------------------------------- -#ifndef __STM32F4_UB_DAC_DMA_H -#define __STM32F4_UB_DAC_DMA_H - - -//-------------------------------------------------------------- -// Includes -//-------------------------------------------------------------- -#include "stm32f4xx.h" -#include "stm32f4xx_gpio.h" -#include "stm32f4xx_rcc.h" -#include "stm32f4xx_dac.h" -#include "stm32f4xx_tim.h" -#include "stm32f4xx_dma.h" - - - -typedef enum { - SINGLE_DAC1_DMA = 0, // nur DAC1 an PA4 benutzen - SINGLE_DAC2_DMA, // nur DAC2 an PA5 benutzen - DUAL_DAC_DMA // DAC1 (PA4) und DAC2 (PA5) benutzen -}DAC_DMA_MODE_t; - - - -//-------------------------------------------------------------- -// Liste aller DAC-Kurvenformen -// (keine Nummer doppelt und von 0 beginnend) -//-------------------------------------------------------------- -typedef enum { - DAC_WAVE_OFF = 0, // Dauer Lo-Pegel [Len=1] - DAC_WAVE1_SINUS = 1, // Waveform1 (Sinus) [Len=32] - DAC_WAVE2_SAEGEZAHN = 2, // Waveform2 (Sägezahn) [Len=17] - DAC_WAVE3_DREIECK = 3, // Waveform3 (Dreieck) [Len=32] - DAC_WAVE4_RECHTECK = 4 // Waveform4 (Rechteck) [Len=4] -}DAC_DMA_WAVE_NAME_t; - - -//-------------------------------------------------------------- -// Timer Grundeinstellungen -//-------------------------------------------------------------- -#define DAC_DMA_DEF_PERIODE 255 // default periode -#define DAC_DMA_DEF_PRESCALE 10 // default prescaler - - -//-------------------------------------------------------------- -// Struktur einer DAC-Kurvenform -//-------------------------------------------------------------- -typedef struct { - DAC_DMA_WAVE_NAME_t name; - const uint16_t *ptr; - uint16_t wave_len; -}DAC_WAVE_t; - - -//-------------------------------------------------------------- -// Timer Einstellung -// Moegliche Timer fuer den DAC1 Trigger : -// Timer2, Timer4, Timer5, Timer6, Timer7 -// (Timer8 hängt an APB2) -//-------------------------------------------------------------- - -// einen Timer auswählen -//#define DAC_DMA_T1_TIM2 2 -//#define DAC_DMA_T1_TIM4 4 -//#define DAC_DMA_T1_TIM5 5 -#define DAC_DMA_T1_TIM6 6 -//#define DAC_DMA_T1_TIM7 7 - - -#ifdef DAC_DMA_T1_TIM2 - #define DAC_TIM1_TRG DAC_Trigger_T2_TRGO - #define DAC_TIM1_CLK RCC_APB1Periph_TIM2 - #define DAC_TIM1_NAME TIM2 -#elif defined DAC_DMA_T1_TIM4 - #define DAC_TIM1_TRG DAC_Trigger_T4_TRGO - #define DAC_TIM1_CLK RCC_APB1Periph_TIM4 - #define DAC_TIM1_NAME TIM4 -#elif defined DAC_DMA_T1_TIM5 - #define DAC_TIM1_TRG DAC_Trigger_T5_TRGO - #define DAC_TIM1_CLK RCC_APB1Periph_TIM5 - #define DAC_TIM1_NAME TIM5 -#elif defined DAC_DMA_T1_TIM6 - #define DAC_TIM1_TRG DAC_Trigger_T6_TRGO - #define DAC_TIM1_CLK RCC_APB1Periph_TIM6 - #define DAC_TIM1_NAME TIM6 -#elif defined DAC_DMA_T1_TIM7 - #define DAC_TIM1_TRG DAC_Trigger_T7_TRGO - #define DAC_TIM1_CLK RCC_APB1Periph_TIM7 - #define DAC_TIM1_NAME TIM7 -#endif - - -//-------------------------------------------------------------- -// Timer Einstellung -// Moegliche Timer fuer den DAC2 Trigger : -// Timer2, Timer4, Timer5, Timer6, Timer7 -// (Timer8 hängt an APB2) -//-------------------------------------------------------------- - -// einen Timer auswählen -//#define DAC_DMA_T2_TIM2 2 -//#define DAC_DMA_T2_TIM4 4 -//#define DAC_DMA_T2_TIM5 5 -//#define DAC_DMA_T2_TIM6 6 -#define DAC_DMA_T2_TIM7 7 - - -#ifdef DAC_DMA_T2_TIM2 - #define DAC_TIM2_TRG DAC_Trigger_T2_TRGO - #define DAC_TIM2_CLK RCC_APB1Periph_TIM2 - #define DAC_TIM2_NAME TIM2 -#elif defined DAC_DMA_T2_TIM4 - #define DAC_TIM2_TRG DAC_Trigger_T4_TRGO - #define DAC_TIM2_CLK RCC_APB1Periph_TIM4 - #define DAC_TIM2_NAME TIM4 -#elif defined DAC_DMA_T2_TIM5 - #define DAC_TIM2_TRG DAC_Trigger_T5_TRGO - #define DAC_TIM2_CLK RCC_APB1Periph_TIM5 - #define DAC_TIM2_NAME TIM5 -#elif defined DAC_DMA_T2_TIM6 - #define DAC_TIM2_TRG DAC_Trigger_T6_TRGO - #define DAC_TIM2_CLK RCC_APB1Periph_TIM6 - #define DAC_TIM2_NAME TIM6 -#elif defined DAC_DMA_T2_TIM7 - #define DAC_TIM2_TRG DAC_Trigger_T7_TRGO - #define DAC_TIM2_CLK RCC_APB1Periph_TIM7 - #define DAC_TIM2_NAME TIM7 -#endif - - -//-------------------------------------------------------------- -// Adressen der DACs -// (siehe Seite 55 vom Referenz Manual) -//-------------------------------------------------------------- -#define DAC_BASE_ADR ((uint32_t)0x40007400) - - -//-------------------------------------------------------------- -// Adressen der Register -// (siehe Seite 325 vom Referenz Manual) -//-------------------------------------------------------------- -#define DAC1_REG_DHR_12R1_OFFSET 0x08 // 12bit, rechtsbündig -#define DAC2_REG_DHR_12R2_OFFSET 0x14 // 12bit, rechtsbündig - -#define DAC1_DHR_12R1_ADDRESS (DAC_BASE_ADR | DAC1_REG_DHR_12R1_OFFSET) -#define DAC2_DHR_12R2_ADDRESS (DAC_BASE_ADR | DAC2_REG_DHR_12R2_OFFSET) - - - - -//-------------------------------------------------------------- -// Globale Funktionen -//-------------------------------------------------------------- -void UB_DAC_DMA_Init(DAC_DMA_MODE_t mode); -void UB_DAC_DMA_SetWaveform1(DAC_DMA_WAVE_NAME_t wave); -void UB_DAC_DMA_SetWaveform2(DAC_DMA_WAVE_NAME_t wave); -void UB_DAC_DMA_SetFrq1(uint16_t vorteiler, uint16_t periode); -void UB_DAC_DMA_SetFrq2(uint16_t vorteiler, uint16_t periode); - - - - -//-------------------------------------------------------------- -#endif // __STM32F4_UB_DAC_DMA_H