adc
communication.c
- Committer:
- yuliyasm
- Date:
- 2020-10-27
- Revision:
- 1:5796bdddf29c
File content as of revision 1:5796bdddf29c:
#include "communication.h" #include "cmsis_os.h" extern UART_HandleTypeDef huart3; enum _BOOL_ uart3PkgTransmited = _FALSE_; enum _BOOL_ uart3PkgReceived = _FALSE_; extern SPI_HandleTypeDef hspi1; enum _BOOL_ spi1PkgTransmited = _FALSE_; enum _BOOL_ spi1PkgReceived = _FALSE_; enum OP_TYPE spi1OpType = NONE; uint8_t *spi1Buf; uint8_t spi1Len; //void ReceiveUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) //{ // TickType_t timeBegin = xTaskGetTickCount(); // HAL_StatusTypeDef err = HAL_UART_Receive_DMA(huart, buf, len); // while (!uart3PkgReceived && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); // // uart3PkgReceived = _FALSE_; //} // // // //void TransmitUARTPackage(UART_HandleTypeDef *huart, uint8_t *buf, uint8_t len) //{ // TickType_t timeBegin = xTaskGetTickCount(); // HAL_StatusTypeDef err = HAL_UART_Transmit_DMA(huart, buf, len); // while (!uart3PkgTransmited && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); // // uart3PkgTransmited = _FALSE_; //} // // // //void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) //{ // if(huart == &huart3) { // uart3PkgTransmited = _TRUE_; // } //} // // // //void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) //{ // if(huart == &huart3){ // uart3PkgReceived = _TRUE_; // } //} void WriteToRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) { //TickType_t timeBegin = xTaskGetTickCount(); enum _BOOL_ *cpltCheck; if(hspi == &hspi1) { spi1Buf = buf; spi1Len = len; spi1OpType = WRITE; cpltCheck = &spi1PkgTransmited; } HAL_SPI_Transmit_DMA(hspi, &addr, 1); // while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); *cpltCheck = _FALSE_; } void ReadFromRegisterBySPI(SPI_HandleTypeDef *hspi, uint8_t addr, uint8_t *buf, uint8_t len) { // TickType_t timeBegin = xTaskGetTickCount(); enum _BOOL_ *cpltCheck; if(hspi == &hspi1) { spi1Buf = buf; spi1Len = len; spi1OpType = READ; cpltCheck = &spi1PkgReceived; } uint8_t addrBuf = addr; HAL_SPI_Transmit_DMA(hspi, &addrBuf, 1); // while (!*cpltCheck && xTaskGetTickCount() - timeBegin < COMMUNICATION_WAITTING) osDelay(COMMUNICATION_DELAY); *cpltCheck = _FALSE_; } void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi) { if(hspi == &hspi1) { switch (spi1OpType) { case WRITE: spi1OpType = CPLT; HAL_SPI_Transmit_DMA(hspi, spi1Buf, spi1Len); break; case READ: spi1OpType = CPLT; HAL_SPI_Receive_DMA(hspi, spi1Buf, spi1Len); break; case CPLT: spi1PkgTransmited = _TRUE_; spi1OpType = NONE; break; case NONE: break; } } } void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi) { if(hspi == &hspi1) { spi1PkgReceived = _TRUE_; spi1OpType = NONE; } }