diff --git a/.gitignore b/.gitignore index 4f916e1..0dc42b5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ Debug +Release .settings *.launch mx.scratch \ No newline at end of file diff --git a/.mxproject b/.mxproject index 38276ca..e08cffb 100644 --- a/.mxproject +++ b/.mxproject @@ -9,17 +9,17 @@ CDefines=USE_HAL_DRIVER;STM32L432xx;USE_HAL_DRIVER;USE_HAL_DRIVER; [PreviousGenFiles] AdvancedFolderStructure=true HeaderFileListSize=3 -HeaderFiles#0=C:/shared_ubuntu/STMGyro/Core/Inc/stm32l4xx_it.h -HeaderFiles#1=C:/shared_ubuntu/STMGyro/Core/Inc/stm32l4xx_hal_conf.h -HeaderFiles#2=C:/shared_ubuntu/STMGyro/Core/Inc/main.h +HeaderFiles#0=C:/Users/Maxim/Documents/STMGyro/Core/Inc/stm32l4xx_it.h +HeaderFiles#1=C:/Users/Maxim/Documents/STMGyro/Core/Inc/stm32l4xx_hal_conf.h +HeaderFiles#2=C:/Users/Maxim/Documents/STMGyro/Core/Inc/main.h HeaderFolderListSize=1 -HeaderPath#0=C:/shared_ubuntu/STMGyro/Core/Inc +HeaderPath#0=C:/Users/Maxim/Documents/STMGyro/Core/Inc HeaderFiles=; SourceFileListSize=3 -SourceFiles#0=C:/shared_ubuntu/STMGyro/Core/Src/stm32l4xx_it.c -SourceFiles#1=C:/shared_ubuntu/STMGyro/Core/Src/stm32l4xx_hal_msp.c -SourceFiles#2=C:/shared_ubuntu/STMGyro/Core/Src/main.c +SourceFiles#0=C:/Users/Maxim/Documents/STMGyro/Core/Src/stm32l4xx_it.c +SourceFiles#1=C:/Users/Maxim/Documents/STMGyro/Core/Src/stm32l4xx_hal_msp.c +SourceFiles#2=C:/Users/Maxim/Documents/STMGyro/Core/Src/main.c SourceFolderListSize=1 -SourcePath#0=C:/shared_ubuntu/STMGyro/Core/Src +SourcePath#0=C:/Users/Maxim/Documents/STMGyro/Core/Src SourceFiles=; diff --git a/Core/Inc/stm32l4xx_it.h b/Core/Inc/stm32l4xx_it.h index 66ebf09..ced2d7c 100644 --- a/Core/Inc/stm32l4xx_it.h +++ b/Core/Inc/stm32l4xx_it.h @@ -57,6 +57,7 @@ void PendSV_Handler(void); void SysTick_Handler(void); void DMA1_Channel4_IRQHandler(void); void SPI1_IRQHandler(void); +void USART1_IRQHandler(void); /* USER CODE BEGIN EFP */ /* USER CODE END EFP */ diff --git a/Core/Src/gyro_mes.c b/Core/Src/gyro_mes.c index 40c412c..231740d 100644 --- a/Core/Src/gyro_mes.c +++ b/Core/Src/gyro_mes.c @@ -181,8 +181,8 @@ int8_t status_mes(uint8_t* pMes, size_t nLen, struct sData *pOut) if(((pMes[0] >> 1) & 1) != ((rate_range_val >> 1) & 1) && ((pMes[0] >> 0) & 1) != ((rate_range_val >> 1) & 1)) return (-ERROR_RATE); - rate_val = ((uint16_t)pMes[2] << 8) | pMes[1]; - temp_val = ((uint16_t)pMes[4] << 8) | pMes[3]; + rate_val = ((uint16_t)pMes[1] << 8) | pMes[2]; + temp_val = ((uint16_t)pMes[3] << 8) | pMes[4]; if(COM_MES_RATE_RANGE_VAL == COM_MES_RATE_RANGE_75) scale_rate = SCALE_RATE_RANGE_75; diff --git a/Core/Src/main.c b/Core/Src/main.c index 829c1d9..0ffeeea 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -18,8 +18,9 @@ /* USER CODE END Header */ /* Includes ------------------------------------------------------------------*/ #include "main.h" -#include "stdio.h" #include "gyro_mes.h" +#include "stdio.h" +#include "string.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ @@ -118,7 +119,7 @@ int main(void) { flag_cs = 1; CS1_ON(); - int res = HAL_SPI_TransmitReceive_IT(&hspi1, (uint8_t*) (data_in), (uint8_t *) (data_out), sizeof(data_in) / sizeof(data_in[0])); + res = HAL_SPI_TransmitReceive_IT(&hspi1, (uint8_t*) (data_in), (uint8_t *) (data_out), sizeof(data_in) / sizeof(data_in[0])); while(!flag_receive && res == 0) { HAL_Delay(1); } @@ -138,6 +139,7 @@ int main(void) while(!flag_receive && res == 0) { HAL_Delay(1); } + CS3_OFF(); flag_receive = 0; /* USER CODE END WHILE */ @@ -319,15 +321,22 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi) { struct sData data; if(hspi == &hspi1) + { + int8_t res = status_mes(data_out, sizeof(data_out) / sizeof(data_out[0]), &data); + if(res == 0) + { + char str[41]; + memset(str, 0, sizeof(str)); + sprintf (str, "Gyro%u! Temp = %i; Rate = %i\r\n", flag_cs, data.temp, data.rate); + res = HAL_UART_Transmit_DMA(&huart1, (uint8_t*)str, sizeof(str) / sizeof(str[0])); + } + } +} + +void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart) { + if(huart == &huart1) { flag_receive = 1; - int8_t res = status_mes(data_out, sizeof(data_out) / sizeof(data_out), &data); - if(res == 0) - { - char str[40]; - sprintf (str, "Gyro%u! Temp = %i; Rate = %i.", flag_cs, data.temp, data.rate); - HAL_UART_Transmit_DMA(&huart1, (uint8_t*)str, sizeof(str)); - } } } /* USER CODE END 4 */ diff --git a/Core/Src/stm32l4xx_hal_msp.c b/Core/Src/stm32l4xx_hal_msp.c index 281f914..e6d62ae 100644 --- a/Core/Src/stm32l4xx_hal_msp.c +++ b/Core/Src/stm32l4xx_hal_msp.c @@ -206,6 +206,9 @@ void HAL_UART_MspInit(UART_HandleTypeDef* huart) __HAL_LINKDMA(huart,hdmatx,hdma_usart1_tx); + /* USART1 interrupt Init */ + HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); + HAL_NVIC_EnableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspInit 1 */ /* USER CODE END USART1_MspInit 1 */ @@ -237,6 +240,9 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* huart) /* USART1 DMA DeInit */ HAL_DMA_DeInit(huart->hdmatx); + + /* USART1 interrupt DeInit */ + HAL_NVIC_DisableIRQ(USART1_IRQn); /* USER CODE BEGIN USART1_MspDeInit 1 */ /* USER CODE END USART1_MspDeInit 1 */ diff --git a/Core/Src/stm32l4xx_it.c b/Core/Src/stm32l4xx_it.c index 7a2231c..4012706 100644 --- a/Core/Src/stm32l4xx_it.c +++ b/Core/Src/stm32l4xx_it.c @@ -57,6 +57,7 @@ /* External variables --------------------------------------------------------*/ extern SPI_HandleTypeDef hspi1; extern DMA_HandleTypeDef hdma_usart1_tx; +extern UART_HandleTypeDef huart1; /* USER CODE BEGIN EV */ /* USER CODE END EV */ @@ -227,6 +228,20 @@ void SPI1_IRQHandler(void) /* USER CODE END SPI1_IRQn 1 */ } +/** + * @brief This function handles USART1 global interrupt. + */ +void USART1_IRQHandler(void) +{ + /* USER CODE BEGIN USART1_IRQn 0 */ + + /* USER CODE END USART1_IRQn 0 */ + HAL_UART_IRQHandler(&huart1); + /* USER CODE BEGIN USART1_IRQn 1 */ + + /* USER CODE END USART1_IRQn 1 */ +} + /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/STMGyro.ioc b/STMGyro.ioc index 0ebe327..a5bb55e 100644 --- a/STMGyro.ioc +++ b/STMGyro.ioc @@ -51,6 +51,7 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4 NVIC.SPI1_IRQn=true\:0\:0\:false\:false\:true\:true\:true NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true\:false\:false NVIC.SysTick_IRQn=true\:15\:0\:false\:false\:true\:false\:true +NVIC.USART1_IRQn=true\:0\:0\:false\:false\:true\:true\:true NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true\:false\:false PA1.GPIOParameters=PinState,GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultOutputPP PA1.GPIO_Label=CS1 @@ -118,7 +119,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_SPI1_Init-SPI1-false-HAL-true,4-MX_DMA_Init-DMA-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true +ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false-HAL-true,2-SystemClock_Config-RCC-false-HAL-false,3-MX_SPI1_Init-SPI1-false-HAL-true,4-MX_DMA_Init-DMA-false-HAL-true RCC.FamilyName=M RCC.HSE_VALUE=8000000 RCC.HSI48_VALUE=48000000