diff --git a/.cproject b/.cproject index 3a11cbf..e84cad0 100644 --- a/.cproject +++ b/.cproject @@ -105,9 +105,6 @@ - - - @@ -185,7 +182,7 @@ - + @@ -208,7 +205,7 @@ - + @@ -291,7 +288,7 @@ - + diff --git a/Src/stm32f4xx_it.c b/Src/stm32f4xx_it.c index 2c1b1cd..ceb5b6b 100644 --- a/Src/stm32f4xx_it.c +++ b/Src/stm32f4xx_it.c @@ -16,6 +16,9 @@ * ****************************************************************************** */ +#ifdef __cplusplus +extern "C" { + /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ @@ -29,7 +32,11 @@ #include "memcpy_dma.h" #include "globals.h" #include "diag.h" -#include "ll_testbed.h" +} + +#include "globals_cpp.h" + +extern "C" { /* USER CODE END Includes */ @@ -215,7 +222,7 @@ void SysTick_Handler(void) void DMA1_Stream1_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream1_IRQn 0 */ - _HandleUsartRxDmaIrq(USART3_OFFSET); + f4ll::LL_HsUsart::HandleRxDmaIrq(g_usarts[USART3_OFFSET]); /* USER CODE END DMA1_Stream1_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream1_IRQn 1 */ @@ -243,7 +250,7 @@ void DMA1_Stream2_IRQHandler(void) void DMA1_Stream3_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream3_IRQn 0 */ - _HandleUsartTxDmaIrq(USART3_OFFSET); + f4ll::LL_HsUsart::HandleTxDmaIrq(g_usarts[USART3_OFFSET]); /* USER CODE END DMA1_Stream3_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream3_IRQn 1 */ @@ -271,7 +278,7 @@ void DMA1_Stream4_IRQHandler(void) void DMA1_Stream5_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream5_IRQn 0 */ - _HandleUsartRxDmaIrq(USART2_OFFSET); + f4ll::LL_HsUsart::HandleRxDmaIrq(g_usarts[USART2_OFFSET]); /* USER CODE END DMA1_Stream5_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream5_IRQn 1 */ @@ -285,7 +292,7 @@ void DMA1_Stream5_IRQHandler(void) void DMA1_Stream6_IRQHandler(void) { /* USER CODE BEGIN DMA1_Stream6_IRQn 0 */ - _HandleUsartTxDmaIrq(USART2_OFFSET); + f4ll::LL_HsUsart::HandleTxDmaIrq(g_usarts[USART2_OFFSET]); /* USER CODE END DMA1_Stream6_IRQn 0 */ /* USER CODE BEGIN DMA1_Stream6_IRQn 1 */ @@ -325,7 +332,8 @@ void SPI2_IRQHandler(void) void USART1_IRQHandler(void) { /* USER CODE BEGIN USART1_IRQn 0 */ - _HandleUsartIrq(USART1_OFFSET); + f4ll::LL_HsUsart::HandleUsartIrq(g_usarts[USART1_OFFSET]); + // _HandleUsartIrq(); /* USER CODE END USART1_IRQn 0 */ /* USER CODE BEGIN USART1_IRQn 1 */ @@ -338,7 +346,7 @@ void USART1_IRQHandler(void) void USART2_IRQHandler(void) { /* USER CODE BEGIN USART2_IRQn 0 */ - _HandleUsartIrq(USART2_OFFSET); + f4ll::LL_HsUsart::HandleUsartIrq(g_usarts[USART2_OFFSET]); /* USER CODE END USART2_IRQn 0 */ /* USER CODE BEGIN USART2_IRQn 1 */ @@ -351,7 +359,7 @@ void USART2_IRQHandler(void) void USART3_IRQHandler(void) { /* USER CODE BEGIN USART3_IRQn 0 */ - _HandleUsartIrq(USART3_OFFSET); + f4ll::LL_HsUsart::HandleUsartIrq(g_usarts[USART3_OFFSET]); /* USER CODE END USART3_IRQn 0 */ /* USER CODE BEGIN USART3_IRQn 1 */ @@ -391,7 +399,7 @@ void DMA2_Stream0_IRQHandler(void) void DMA2_Stream1_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream1_IRQn 0 */ - _HandleUsartRxDmaIrq(USART6_OFFSET); + f4ll::LL_HsUsart::HandleRxDmaIrq(g_usarts[USART6_OFFSET]); /* USER CODE END DMA2_Stream1_IRQn 0 */ /* USER CODE BEGIN DMA2_Stream1_IRQn 1 */ @@ -405,7 +413,7 @@ void DMA2_Stream1_IRQHandler(void) void DMA2_Stream2_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream2_IRQn 0 */ - _HandleUsartRxDmaIrq(USART1_OFFSET); + f4ll::LL_HsUsart::HandleRxDmaIrq(g_usarts[USART1_OFFSET]); /* USER CODE END DMA2_Stream2_IRQn 0 */ /* USER CODE BEGIN DMA2_Stream2_IRQn 1 */ @@ -434,11 +442,11 @@ void DMA2_Stream3_IRQHandler(void) void DMA2_Stream4_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream4_IRQn 0 */ - //HandleCrcDmaIrq(&g_crcStatus); + f4ll::LL_CrcHandler::Instance().DmaTransferCompleted(); /* USER CODE END DMA2_Stream4_IRQn 0 */ /* USER CODE BEGIN DMA2_Stream4_IRQn 1 */ - _HandleCrcDmaIrq(); + /* USER CODE END DMA2_Stream4_IRQn 1 */ } @@ -462,7 +470,7 @@ void DMA2_Stream5_IRQHandler(void) void DMA2_Stream6_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream6_IRQn 0 */ - _HandleUsartTxDmaIrq(USART6_OFFSET); + f4ll::LL_HsUsart::HandleTxDmaIrq(g_usarts[USART6_OFFSET]); /* USER CODE END DMA2_Stream6_IRQn 0 */ /* USER CODE BEGIN DMA2_Stream6_IRQn 1 */ @@ -476,7 +484,7 @@ void DMA2_Stream6_IRQHandler(void) void DMA2_Stream7_IRQHandler(void) { /* USER CODE BEGIN DMA2_Stream7_IRQn 0 */ - _HandleUsartTxDmaIrq(USART1_OFFSET); + f4ll::LL_HsUsart::HandleTxDmaIrq(g_usarts[USART1_OFFSET]); /* USER CODE END DMA2_Stream7_IRQn 0 */ /* USER CODE BEGIN DMA2_Stream7_IRQn 1 */ @@ -490,7 +498,7 @@ void DMA2_Stream7_IRQHandler(void) void USART6_IRQHandler(void) { /* USER CODE BEGIN USART6_IRQn 0 */ - _HandleUsartIrq(USART6_OFFSET); + f4ll::LL_HsUsart::HandleUsartIrq(g_usarts[USART6_OFFSET]); /* USER CODE END USART6_IRQn 0 */ /* USER CODE BEGIN USART6_IRQn 1 */ @@ -499,5 +507,7 @@ void USART6_IRQHandler(void) /* USER CODE BEGIN 1 */ +} +#endif // __cplusplus /* USER CODE END 1 */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/Src/stm32f4xx_it_.cpp b/Src/stm32f4xx_it_.cpp new file mode 120000 index 0000000..e509cd0 --- /dev/null +++ b/Src/stm32f4xx_it_.cpp @@ -0,0 +1 @@ +stm32f4xx_it.c \ No newline at end of file diff --git a/app/globals_cpp.cpp b/app/globals_cpp.cpp new file mode 100644 index 0000000..6f0e59e --- /dev/null +++ b/app/globals_cpp.cpp @@ -0,0 +1,13 @@ +/* + * globals_cpp.cpp + * + * Created on: Nov 4, 2019 + * Author: abody + */ +#include "globals.h" + +#include "ll_hsusart.h" + +f4ll::LL_HsUsart *g_usarts[4]; + + diff --git a/app/globals_cpp.h b/app/globals_cpp.h new file mode 100644 index 0000000..517c2df --- /dev/null +++ b/app/globals_cpp.h @@ -0,0 +1,17 @@ +/* + * globals_cpp.h + * + * Created on: Nov 4, 2019 + * Author: abody + */ + +#ifndef GLOBALS_CPP_H_ +#define GLOBALS_CPP_H_ + +#ifdef __cplusplus +#include "ll_hsusart.h" + +extern f4ll::LL_HsUsart *g_usarts[4]; + +#endif // __cplusplus +#endif /* GLOBALS_CPP_H_ */ diff --git a/app/ll_testbed.cpp b/app/ll_testbed.cpp index bec86c9..d588b62 100644 --- a/app/ll_testbed.cpp +++ b/app/ll_testbed.cpp @@ -8,39 +8,16 @@ #include #include "ll_hsusart.h" #include "ll_crchandler.h" -#include "ll_testbed.h" -#include "main.h" extern "C" { + #include "main.h" #include "globals.h" #include "strutil.h" } +#include "globals_cpp.h" #define PACKAGE_DELAY_MS 0 #define STATS_DELAY_MS 1000 -f4ll::LL_CrcHandler *g_crc = nullptr; - -f4ll::LL_HsUsart *g_usarts[4]; - -extern "C" void _HandleCrcDmaIrq(void) -{ - f4ll::LL_CrcHandler::Instance().DmaTransferCompleted(); -} - -extern "C" void _HandleUsartIrq(int offset) -{ - f4ll::LL_HsUsart::HandleUsartIrq(g_usarts[offset]); -} - -extern "C" void _HandleUsartRxDmaIrq(int offset) -{ - f4ll::LL_HsUsart::HandleRxDmaIrq(g_usarts[offset]); -} - -extern "C" void _HandleUsartTxDmaIrq(int offset) -{ - f4ll::LL_HsUsart::HandleTxDmaIrq(g_usarts[offset]); -} #define ADDINFO(b,s,u) \ b += strcpy_ex(b,s); \ @@ -85,7 +62,7 @@ extern "C" void MainLoop() f4ll::LL_CrcHandler::Init(DMA2, LL_DMA_STREAM_4); f4ll::LL_CrcHandler::Slot<2> slt; - f4ll::LL_HsUsart u1{USART1, DMA2, LL_DMA_STREAM_2, LL_DMA_STREAM_7}; + f4ll::LL_HsUsart u1{ USART1, DMA2, LL_DMA_STREAM_2, LL_DMA_STREAM_7 }; f4ll::LL_HsUsart u2{ USART2, DMA1, LL_DMA_STREAM_5, LL_DMA_STREAM_6 }; f4ll::LL_HsUsart u3{ USART3, DMA1, LL_DMA_STREAM_1, LL_DMA_STREAM_3 }; f4ll::LL_HsUsart u6{ USART6, DMA2, LL_DMA_STREAM_1, LL_DMA_STREAM_6 }; diff --git a/app/ll_testbed.h b/app/ll_testbed.h deleted file mode 100644 index 1ce486a..0000000 --- a/app/ll_testbed.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * ll_testbed.h - * - * Created on: Oct 31, 2019 - * Author: compi - */ - -#ifndef LL_TESTBED_H_ -#define LL_TESTBED_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -void _HandleCrcDmaIrq(void); -void _HandleUsartIrq(int offset); -void _HandleUsartRxDmaIrq(int offset); -void _HandleUsartTxDmaIrq(int offset); - -#ifdef __cplusplus -} -#endif - - - - -#endif /* LL_TESTBED_H_ */ diff --git a/lib/ll_crchandler.h b/lib/ll_crchandler.h index 4b044f0..51b9669 100644 --- a/lib/ll_crchandler.h +++ b/lib/ll_crchandler.h @@ -68,12 +68,12 @@ public: bool IsQueued(SlotBase &slot, uint8_t prio) const; bool IsRunning(SlotBase &slot, uint8_t prio) const; + void DmaTransferCompleted(void); private: LL_CrcHandler(DMA_TypeDef *dma, uint32_t stream); friend void ::_HandleCrcDmaIrq(void); - void DmaTransferCompleted(void); void StartNextTask(void); void WaitResults(SlotBase &slot, uint8_t prio) const; diff --git a/lib/ll_memcpydma.cpp b/lib/ll_memcpydma.cpp new file mode 100644 index 0000000..7ea564b --- /dev/null +++ b/lib/ll_memcpydma.cpp @@ -0,0 +1,18 @@ +/* + * llmemcpydma.cpp + * + * Created on: Nov 4, 2019 + * Author: abody + */ + +#include + +namespace f4ll { + +LL_MemcpyDma::LL_MemcpyDma(DMA_TypeDef *dma, uint32_t stream) +: LL_DmaHelper(dma, stream) +{ + LL_DMA_EnableIT_TC(dma, stream); +} + +} /* namespace f4ll */ diff --git a/lib/ll_memcpydma.h b/lib/ll_memcpydma.h new file mode 100644 index 0000000..23dd0b1 --- /dev/null +++ b/lib/ll_memcpydma.h @@ -0,0 +1,24 @@ +/* + * llmemcpydma.h + * + * Created on: Nov 4, 2019 + * Author: abody + */ + +#ifndef LL_MEMCPY_DMA_H_ +#define LL_MEMCPY_DMA_H_ +#include "ll_dmahelper.h" + +namespace f4ll { + +class LL_MemcpyDma : private LL_DmaHelper +{ +public: + LL_MemcpyDma(DMA_TypeDef *dma, uint32_t stream); + void Copy(void *dst, void const *src, uint16_t length); + +}; + +} /* namespace f4ll */ + +#endif /* LL_MEMCPY_DMA_H_ */