DMA interrupts interrupting
authordrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 31 May 2013 23:32:26 +0000 (23:32 +0000)
committerdrowe67 <drowe67@01035d8c-6547-0410-b346-abe4f91aad63>
Fri, 31 May 2013 23:32:26 +0000 (23:32 +0000)
git-svn-id: https://svn.code.sf.net/p/freetel/code@1301 01035d8c-6547-0410-b346-abe4f91aad63

codec2-dev/stm32/Makefile
codec2-dev/stm32/inc/dac_it.h [new file with mode: 0644]
codec2-dev/stm32/inc/dac_ut.h [deleted file]
codec2-dev/stm32/src/dac_it.c [new file with mode: 0644]
codec2-dev/stm32/src/dac_ut.c

index cc43155841e5c45c1703d7170a626941c5c0e78b..9befea459d0a78204f1facc7dd52bdb851e6cb40 100644 (file)
@@ -14,7 +14,7 @@ SIZE=$(BINPATH)/arm-none-eabi-size
 
 ###################################################
 
-CFLAGS  = -std=gnu99 -g -O2 -Wall -Tstm32_flash.ld -DSTM32F4XX -DCORTEX_M4
+CFLAGS  = -std=gnu99 -O2 -g -Wall -Tstm32_flash.ld -DSTM32F4XX -DCORTEX_M4
 CFLAGS += -mlittle-endian -mthumb -mthumb-interwork -nostartfiles -mcpu=cortex-m4
 
 ifeq ($(FLOAT_TYPE), hard)
@@ -132,19 +132,15 @@ $(PROJ_NAME).elf: $(SRCS)
 fft_test.elf: $(FFT_TEST_SRCS)
        $(CC) $(CFLAGS) $^ -o $@ $(LIBPATHS) $(LIBS)
 
-DAC_TEST=$(PERIPHLIBDIR)/Project/STM32F4xx_StdPeriph_Examples/DAC/DAC_SignalsGeneration
 DAC_TEST_SRCS=\
 src/dac_ut.c \
+src/dac_it.c \
 src/system_stm32f4xx.c \
 src/startup_stm32f4xx.s \
 src/init.c
 
-#$(DAC_TEST)/stm32f4xx_it.c \
-#$(DAC_TEST)/system_stm32f4xx.c \
-#(PERIPHLIBDIR)/Utilities/STM32_EVAL/STM3240_41_G_EVAL/stm324xg_eval.c \
-
 dac_ut.elf: $(DAC_TEST_SRCS)
-       $(CC) $(CFLAGS) -DUSE_STM324xG_EVAL -I$(PERIPHLIBDIR)/Utilities/STM32_EVAL/STM3240_41_G_EVAL -I$(PERIPHLIBDIR)/Utilities/STM32_EVAL/Common $^ -o $@ $(LIBPATHS) $(LIBS)
+       $(CC) $(CFLAGS) -O0 $^ -o $@ $(LIBPATHS) $(LIBS)
 
 clean:
        rm -f *.o
diff --git a/codec2-dev/stm32/inc/dac_it.h b/codec2-dev/stm32/inc/dac_it.h
new file mode 100644 (file)
index 0000000..e935fea
--- /dev/null
@@ -0,0 +1,61 @@
+/**\r
+  ******************************************************************************\r
+  * @file    DMA/DMA_FLASHToRAM/stm32f4xx_it.h \r
+  * @author  MCD Application Team\r
+  * @version V1.1.0\r
+  * @date    18-January-2013\r
+  * @brief   This file contains the headers of the interrupt handlers.\r
+  ******************************************************************************\r
+  * @attention\r
+  *\r
+  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>\r
+  *\r
+  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");\r
+  * You may not use this file except in compliance with the License.\r
+  * You may obtain a copy of the License at:\r
+  *\r
+  *        http://www.st.com/software_license_agreement_liberty_v2\r
+  *\r
+  * Unless required by applicable law or agreed to in writing, software \r
+  * distributed under the License is distributed on an "AS IS" BASIS, \r
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+  * See the License for the specific language governing permissions and\r
+  * limitations under the License.\r
+  *\r
+  ******************************************************************************\r
+  */\r
+\r
+/* Define to prevent recursive inclusion -------------------------------------*/\r
+#ifndef __STM32F4xx_IT_H\r
+#define __STM32F4xx_IT_H\r
+\r
+#ifdef __cplusplus\r
+ extern "C" {\r
+#endif \r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "stm32f4xx_dma.h"\r
+\r
+/* Exported types ------------------------------------------------------------*/\r
+/* Exported constants --------------------------------------------------------*/\r
+/* Exported macro ------------------------------------------------------------*/\r
+/* Exported functions ------------------------------------------------------- */\r
+\r
+void NMI_Handler(void);\r
+void HardFault_Handler(void);\r
+void MemManage_Handler(void);\r
+void BusFault_Handler(void);\r
+void UsageFault_Handler(void);\r
+void SVC_Handler(void);\r
+void DebugMon_Handler(void);\r
+void PendSV_Handler(void);\r
+void SysTick_Handler(void);\r
+void DMA_STREAM_IRQHANDLER(void);\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /* __STM32F4xx_IT_H */\r
+\r
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
diff --git a/codec2-dev/stm32/inc/dac_ut.h b/codec2-dev/stm32/inc/dac_ut.h
deleted file mode 100644 (file)
index b235e56..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/**\r
-  ******************************************************************************\r
-  * @file    DAC/DAC_SignalsGeneration/main.h \r
-  * @author  MCD Application Team\r
-  * @version V1.1.0\r
-  * @date    18-January-2013\r
-  * @brief   Header for main.c module\r
-  ******************************************************************************\r
-  * @attention\r
-  *\r
-  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>\r
-  *\r
-  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");\r
-  * You may not use this file except in compliance with the License.\r
-  * You may obtain a copy of the License at:\r
-  *\r
-  *        http://www.st.com/software_license_agreement_liberty_v2\r
-  *\r
-  * Unless required by applicable law or agreed to in writing, software \r
-  * distributed under the License is distributed on an "AS IS" BASIS, \r
-  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-  * See the License for the specific language governing permissions and\r
-  * limitations under the License.\r
-  *\r
-  ******************************************************************************\r
-  */\r
-  \r
-/* Define to prevent recursive inclusion -------------------------------------*/\r
-#ifndef __MAIN_H\r
-#define __MAIN_H\r
-\r
-/* Includes ------------------------------------------------------------------*/\r
-#include "stm32f4xx.h"\r
-\r
-#if defined (USE_STM324xG_EVAL)\r
-  #include "stm324xg_eval.h"\r
-\r
-#elif defined (USE_STM324x7I_EVAL) \r
-  #include "stm324x7i_eval.h"\r
-\r
-#else\r
- #error "Please select first the Evaluation board used in your application (in Project Options)"\r
-#endif\r
-\r
-/* Exported types ------------------------------------------------------------*/\r
-/* Exported constants --------------------------------------------------------*/\r
-/* Exported macro ------------------------------------------------------------*/\r
-#if defined (USE_STM324xG_EVAL)\r
-\r
-  #define DAC_DHR12R2_ADDRESS    0x40007414\r
-  #define DAC_DHR8R1_ADDRESS     0x40007410\r
-\r
-#else /* defined (USE_STM324x7I_EVAL)*/ \r
-\r
-  #define DAC_DHR12R2_ADDRESS    0x40007414\r
-  #define DAC_DHR8R1_ADDRESS     0x40007410\r
-\r
-#endif\r
-/* Exported functions ------------------------------------------------------- */\r
-\r
-#endif /* __MAIN_H */\r
-\r
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
diff --git a/codec2-dev/stm32/src/dac_it.c b/codec2-dev/stm32/src/dac_it.c
new file mode 100644 (file)
index 0000000..3d671ca
--- /dev/null
@@ -0,0 +1,188 @@
+/**\r
+  ******************************************************************************\r
+  * @file    DMA/DMA_FLASHToRAM/stm32f4xx_it.c \r
+  * @author  MCD Application Team\r
+  * @version V1.1.0\r
+  * @date    18-January-2013\r
+  * @brief   Main Interrupt Service Routines.\r
+  *          This file provides template for all exceptions handler and \r
+  *          peripherals interrupt service routine.\r
+  ******************************************************************************\r
+  * @attention\r
+  *\r
+  * <h2><center>&copy; COPYRIGHT 2013 STMicroelectronics</center></h2>\r
+  *\r
+  * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");\r
+  * You may not use this file except in compliance with the License.\r
+  * You may obtain a copy of the License at:\r
+  *\r
+  *        http://www.st.com/software_license_agreement_liberty_v2\r
+  *\r
+  * Unless required by applicable law or agreed to in writing, software \r
+  * distributed under the License is distributed on an "AS IS" BASIS, \r
+  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+  * See the License for the specific language governing permissions and\r
+  * limitations under the License.\r
+  *\r
+  ******************************************************************************\r
+  */\r
+int interrupts;\r
+\r
+\r
+/* Includes ------------------------------------------------------------------*/\r
+#include "dac_it.h"\r
+\r
+/** @addtogroup STM32F4xx_StdPeriph_Examples\r
+  * @{\r
+  */\r
+\r
+/** @addtogroup DMA_FLASHToRAM\r
+  * @{\r
+  */  \r
+\r
+/* Private typedef -----------------------------------------------------------*/\r
+/* Private define ------------------------------------------------------------*/\r
+/* Private macro -------------------------------------------------------------*/\r
+/* Private variables ---------------------------------------------------------*/\r
+/* Private function prototypes -----------------------------------------------*/\r
+/* Private functions ---------------------------------------------------------*/\r
+\r
+/******************************************************************************/\r
+/*            Cortex-M4 Processor Exceptions Handlers                         */\r
+/******************************************************************************/\r
+\r
+/**\r
+  * @brief   This function handles NMI exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void NMI_Handler(void)\r
+{\r
+}\r
+\r
+/**\r
+  * @brief  This function handles Hard Fault exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void HardFault_Handler(void)\r
+{\r
+  /* Go to infinite loop when Hard Fault exception occurs */\r
+  while (1)\r
+  {\r
+  }\r
+}\r
+\r
+/**\r
+  * @brief  This function handles Memory Manage exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void MemManage_Handler(void)\r
+{\r
+  /* Go to infinite loop when Memory Manage exception occurs */\r
+  while (1)\r
+  {\r
+  }\r
+}\r
+\r
+/**\r
+  * @brief  This function handles Bus Fault exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void BusFault_Handler(void)\r
+{\r
+  /* Go to infinite loop when Bus Fault exception occurs */\r
+  while (1)\r
+  {\r
+  }\r
+}\r
+\r
+/**\r
+  * @brief  This function handles Usage Fault exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void UsageFault_Handler(void)\r
+{\r
+  /* Go to infinite loop when Usage Fault exception occurs */\r
+  while (1)\r
+  {\r
+  }\r
+}\r
+\r
+/**\r
+  * @brief  This function handles SVCall exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void SVC_Handler(void)\r
+{\r
+}\r
+\r
+/**\r
+  * @brief  This function handles Debug Monitor exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void DebugMon_Handler(void)\r
+{\r
+}\r
+\r
+/**\r
+  * @brief  This function handles PendSVC exception.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void PendSV_Handler(void)\r
+{\r
+}\r
+\r
+/**\r
+  * @brief  This function handles SysTick Handler.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void SysTick_Handler(void)\r
+{\r
+}\r
+\r
+/******************************************************************************/\r
+/*                 STM32F4xx Peripherals Interrupt Handlers                   */\r
+/*  Add here the Interrupt Handler for the used peripheral(s) (PPP), for the  */\r
+/*  available peripheral interrupt handler's name please refer to the startup */\r
+/*  file (startup_stm32f40xx.s/startup_stm32f427x.s).                                               */\r
+/******************************************************************************/\r
+\r
+/**\r
+  * @brief  This function handles DMA Stream interrupt request.\r
+  * @param  None\r
+  * @retval None\r
+  */\r
+void DMA1_Stream6_IRQHandler(void)\r
+{\r
+  /* Test on DMA Stream Transfer Complete interrupt */\r
+  if(DMA_GetITStatus(DMA1_Stream6, DMA_IT_HTIF6))\r
+  {\r
+    /* Clear DMA Stream Transfer Complete interrupt pending bit */\r
+    DMA_ClearITPendingBit(DMA1_Stream6, DMA_IT_HTIF6);  \r
+    interrupts++;\r
+  }\r
+  if(DMA_GetITStatus(DMA1_Stream6, DMA_IT_TCIF6))\r
+  {\r
+    /* Clear DMA Stream Transfer Complete interrupt pending bit */\r
+    DMA_ClearITPendingBit(DMA1_Stream6, DMA_IT_TCIF6);  \r
+    interrupts++;\r
+  }\r
+}\r
+\r
+/**\r
+  * @}\r
+  */ \r
+\r
+/**\r
+  * @}\r
+  */\r
+\r
+/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r
index 7284917734919687bc558734d25ded950199f92a..c0d0f7c5216a4a44c92fdd138fba627d27a5eadd 100644 (file)
@@ -156,6 +156,7 @@ static void TIM6_Config(void)
 static void DAC_Ch2_SineWaveConfig(void)\r
 {\r
   DMA_InitTypeDef DMA_InitStructure;\r
+  NVIC_InitTypeDef NVIC_InitStructure;\r
   \r
   /* DAC channel2 Configuration */\r
   DAC_InitStructure.DAC_Trigger = DAC_Trigger_T6_TRGO;\r
@@ -182,6 +183,17 @@ static void DAC_Ch2_SineWaveConfig(void)
   DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;\r
   DMA_Init(DMA1_Stream6, &DMA_InitStructure);\r
 \r
+  /* Enable DMA Half 7 Complete interrupts */\r
+  DMA_ITConfig(DMA1_Stream6, DMA_IT_TC | DMA_IT_HT, ENABLE);\r
+\r
+  /* Enable the DMA Stream IRQ Channel */\r
+\r
+  NVIC_InitStructure.NVIC_IRQChannel = DMA1_Stream6_IRQn;\r
+  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;\r
+  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;\r
+  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;\r
+  NVIC_Init(&NVIC_InitStructure);     \r
+\r
   /* Enable DMA1_Stream6 */\r
   DMA_Cmd(DMA1_Stream6, ENABLE);\r
 \r