Bläddra i källkod

remove uart timer

Juraj Ďuďák 1 år sedan
förälder
incheckning
9b0cf05907
7 ändrade filer med 37 tillägg och 175 borttagningar
  1. 0 1
      Core/Inc/stm32l0xx_it.h
  2. 27 117
      Core/Src/main.c
  3. 0 28
      Core/Src/stm32l0xx_hal_msp.c
  4. 0 15
      Core/Src/stm32l0xx_it.c
  5. 1 1
      Modules/nbus
  6. 6 11
      baModule-slave.ioc
  7. 3 2
      test/app.py

+ 0 - 1
Core/Inc/stm32l0xx_it.h

@@ -56,7 +56,6 @@ void DMA1_Channel1_IRQHandler(void);
 void DMA1_Channel4_5_6_7_IRQHandler(void);
 void ADC1_COMP_IRQHandler(void);
 void TIM21_IRQHandler(void);
-void TIM22_IRQHandler(void);
 void USART2_IRQHandler(void);
 /* USER CODE BEGIN EFP */
 

+ 27 - 117
Core/Src/main.c

@@ -61,7 +61,6 @@ DMA_HandleTypeDef hdma_adc;
 SPI_HandleTypeDef hspi1;
 
 TIM_HandleTypeDef htim21;
-TIM_HandleTypeDef htim22;
 
 UART_HandleTypeDef huart2;
 DMA_HandleTypeDef hdma_usart2_tx;
@@ -76,7 +75,6 @@ void SystemClock_Config(void);
 static void MX_GPIO_Init(void);
 static void MX_DMA_Init(void);
 static void MX_USART2_UART_Init(void);
-static void MX_TIM22_Init(void);
 static void MX_TIM21_Init(void);
 static void MX_ADC_Init(void);
 static void MX_SPI1_Init(void);
@@ -86,11 +84,12 @@ static void MX_SPI1_Init(void);
 
 /* Private user code ---------------------------------------------------------*/
 /* USER CODE BEGIN 0 */
-uint8_t data[64];
-uint8_t dataUART[64];
+uint8_t data[64];	// tmp read buffer
+uint8_t *dataUART;  // pointee for rx_buffer
 volatile uint8_t dataL;
 volatile uint8_t dataI;
-volatile uint8_t dataUartReady=0;
+
+volatile uint8_t icm_data_ready = 0;
 
 inline void uart_send(uint8_t *data, int n)
 {
@@ -101,6 +100,11 @@ inline void uart_send(uint8_t *data, int n)
 #endif
 }
 
+inline void uart_receive(uint8_t *dataNBUS, int n)
+{
+	dataUART = dataNBUS;
+	HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, n);
+}
 
 inline void led_on(){
 	HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
@@ -114,84 +118,50 @@ inline void led_toggle(){
 	HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
 }
 
-inline void uart_receive(uint8_t *data, int n)
-{
-	HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, n);
-}
-
-/*
-inline void uart_abort_receive(){
-	HAL_UART_AbortReceive_IT(&huart2);
-}
-
-inline void timer_uart_start(int n){
-	htim22.Instance->CNT = 1;
-	htim22.Instance->ARR = 40*n + 400; // (10*n + 100)us
-	HAL_TIM_Base_Start_IT(&htim22);
-}
-
-inline void timer_uart_stop(){
-	HAL_TIM_Base_Stop_IT(&htim22);
-}
-*/
 inline void app_delay(uint8_t ms){
 	HAL_Delay(ms);
 }
 
-/*
-static inline void nbus_app_UART_RX(UART_HandleTypeDef *huart) {
-	nbus_cb_UART_RX();
+static inline uint8_t loop_callback() {
+	if(icm_data_ready == 1){
+		icm_data_ready = 0;
+		return 1;
+	}
+	return 0;
 }
-*/
 
+//  Application callbacks
 void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size){
-
-	HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
 	HAL_UARTEx_ReceiveToIdle_DMA(huart, data, 64);
+	uint8_t copy_offset = 0;
 	if(dataL==0){
 		dataL = data[0];
 		dataI = 0;
-//		HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
 		HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
-		return;
+		if(Size == 1){
+			return;
+		}
+		dataI = 1;
+		Size--;
+		copy_offset = 1;
 	}
-	memcpy(&dataUART[dataI], data, Size);
+
+	memcpy(&dataUART[dataI], &data[copy_offset], Size);
 	dataI += Size;
-	//HAL_UART_Transmit_DMA(huart, dataUART, dataI);
 	if(dataI >= dataL){
 		HAL_GPIO_TogglePin(LD3_GPIO_Port, LD3_Pin);
+		nbus_cb_UART_RX(dataI);
 		dataL=0;
 		dataI=0;
 		data[0]=0;
-		//nbus_cb_UART_RX(dataUART, dataI);
-		dataUartReady = 1;
 	}
-//	HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
-
-
-}
-
-/*
-static inline void nbus_app_TIM_periodElapsed(TIM_HandleTypeDef *htim) {
-	nbus_cb_TIM_periodElapsed();
 }
-*/
-
-volatile uint8_t icm_data_ready = 0;
 
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
 	icm_data_ready = 1;
 }
 
 
-static inline uint8_t loop_callback() {
-	if(icm_data_ready == 1){
-		icm_data_ready = 0;
-		return 1;
-	}
-	return 0;
-}
-
 /* USER CODE END 0 */
 
 /**
@@ -224,7 +194,6 @@ int main(void)
   MX_GPIO_Init();
   MX_DMA_Init();
   MX_USART2_UART_Init();
-  MX_TIM22_Init();
   MX_TIM21_Init();
   MX_SPI1_Init();
   /* USER CODE BEGIN 2 */
@@ -232,7 +201,6 @@ int main(void)
   dataI=0;
   dataL=0;
 
-
 #ifdef MODULE_INIT_IP_ADC
   MX_ADC_Init();
 #endif
@@ -249,12 +217,9 @@ int main(void)
   nBusPlatformInterface_t hw_platform = {
 		  uart_receive,
 		  uart_send,
-//		  NULL,
 		  led_on,
 		  led_off,
 		  led_toggle,
-//		  timer_uart_start,
-//		  timer_uart_stop,
 		  app_delay,
 		  loop_callback,
   };
@@ -290,12 +255,9 @@ int main(void)
 
 	 nbus_init(getImuDriver(), &hw_platform);
 	 nbus_init_app(&hspi1, &config);
-	// nbus_set_app_callback(loop_callback);
+	 //nbus_set_app_callback(loop_callback);
 #endif
 
-//  HAL_UART_RegisterCallback(&huart2, HAL_UART_RX_COMPLETE_CB_ID, nbus_app_UART_RX);
-//  HAL_TIM_RegisterCallback(&htim22, HAL_TIM_PERIOD_ELAPSED_CB_ID, nbus_app_TIM_periodElapsed);
-
   nBus_MemoryDriver memory_ec20 = {
   		DS28EC20_init,
   		DS28EC20_readData4B,
@@ -305,13 +267,6 @@ int main(void)
 		DS28EC20_getId
   };
 
-  HAL_UARTEx_ReceiveToIdle_DMA(&huart2, data, 64);
-while(1){
-	if (dataUartReady == 1){
-		dataUartReady = 0;
-		HAL_UART_Transmit_DMA(&huart2, dataUART, dataI);
-	}
-}
 
   memory_ec20.init(ONE_WIRE_GPIO_Port, ONE_WIRE_Pin);
   nbus_init_memory_driver(&memory_ec20,16);
@@ -576,51 +531,6 @@ static void MX_TIM21_Init(void)
 
 }
 
-/**
-  * @brief TIM22 Initialization Function
-  * @param None
-  * @retval None
-  */
-static void MX_TIM22_Init(void)
-{
-
-  /* USER CODE BEGIN TIM22_Init 0 */
-
-  /* USER CODE END TIM22_Init 0 */
-
-  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
-  TIM_MasterConfigTypeDef sMasterConfig = {0};
-
-  /* USER CODE BEGIN TIM22_Init 1 */
-
-  /* USER CODE END TIM22_Init 1 */
-  htim22.Instance = TIM22;
-  htim22.Init.Prescaler = UART_TIMER_PRESCALER;
-  htim22.Init.CounterMode = TIM_COUNTERMODE_UP;
-  htim22.Init.Period = 65535;
-  htim22.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
-  htim22.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
-  if (HAL_TIM_Base_Init(&htim22) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
-  if (HAL_TIM_ConfigClockSource(&htim22, &sClockSourceConfig) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
-  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
-  if (HAL_TIMEx_MasterConfigSynchronization(&htim22, &sMasterConfig) != HAL_OK)
-  {
-    Error_Handler();
-  }
-  /* USER CODE BEGIN TIM22_Init 2 */
-
-  /* USER CODE END TIM22_Init 2 */
-
-}
-
 /**
   * @brief USART2 Initialization Function
   * @param None

+ 0 - 28
Core/Src/stm32l0xx_hal_msp.c

@@ -292,20 +292,6 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
 
   /* USER CODE END TIM21_MspInit 1 */
   }
-  else if(htim_base->Instance==TIM22)
-  {
-  /* USER CODE BEGIN TIM22_MspInit 0 */
-
-  /* USER CODE END TIM22_MspInit 0 */
-    /* Peripheral clock enable */
-    __HAL_RCC_TIM22_CLK_ENABLE();
-    /* TIM22 interrupt Init */
-    HAL_NVIC_SetPriority(TIM22_IRQn, 0, 0);
-    HAL_NVIC_EnableIRQ(TIM22_IRQn);
-  /* USER CODE BEGIN TIM22_MspInit 1 */
-
-  /* USER CODE END TIM22_MspInit 1 */
-  }
 
 }
 
@@ -331,20 +317,6 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
 
   /* USER CODE END TIM21_MspDeInit 1 */
   }
-  else if(htim_base->Instance==TIM22)
-  {
-  /* USER CODE BEGIN TIM22_MspDeInit 0 */
-
-  /* USER CODE END TIM22_MspDeInit 0 */
-    /* Peripheral clock disable */
-    __HAL_RCC_TIM22_CLK_DISABLE();
-
-    /* TIM22 interrupt DeInit */
-    HAL_NVIC_DisableIRQ(TIM22_IRQn);
-  /* USER CODE BEGIN TIM22_MspDeInit 1 */
-
-  /* USER CODE END TIM22_MspDeInit 1 */
-  }
 
 }
 

+ 0 - 15
Core/Src/stm32l0xx_it.c

@@ -58,7 +58,6 @@
 extern DMA_HandleTypeDef hdma_adc;
 extern ADC_HandleTypeDef hadc;
 extern TIM_HandleTypeDef htim21;
-extern TIM_HandleTypeDef htim22;
 extern DMA_HandleTypeDef hdma_usart2_tx;
 extern DMA_HandleTypeDef hdma_usart2_rx;
 extern UART_HandleTypeDef huart2;
@@ -217,20 +216,6 @@ void TIM21_IRQHandler(void)
   /* USER CODE END TIM21_IRQn 1 */
 }
 
-/**
-  * @brief This function handles TIM22 global interrupt.
-  */
-void TIM22_IRQHandler(void)
-{
-  /* USER CODE BEGIN TIM22_IRQn 0 */
-
-  /* USER CODE END TIM22_IRQn 0 */
-  HAL_TIM_IRQHandler(&htim22);
-  /* USER CODE BEGIN TIM22_IRQn 1 */
-
-  /* USER CODE END TIM22_IRQn 1 */
-}
-
 /**
   * @brief This function handles USART2 global interrupt / USART2 wake-up interrupt through EXTI line 26.
   */

+ 1 - 1
Modules/nbus

@@ -1 +1 @@
-Subproject commit 32813fbb606bb296aca64aa0e0e189992708952d
+Subproject commit 170cf868c9780fe27d56095c607042d38ec40b22

+ 6 - 11
baModule-slave.ioc

@@ -50,9 +50,8 @@ Mcu.IP3=RCC
 Mcu.IP4=SPI1
 Mcu.IP5=SYS
 Mcu.IP6=TIM21
-Mcu.IP7=TIM22
-Mcu.IP8=USART2
-Mcu.IPNb=9
+Mcu.IP7=USART2
+Mcu.IPNb=8
 Mcu.Name=STM32L031K(4-6)Tx
 Mcu.Package=LQFP32
 Mcu.Pin0=PC14-OSC32_IN
@@ -72,8 +71,8 @@ Mcu.Pin20=PB4
 Mcu.Pin21=PB5
 Mcu.Pin22=PB6
 Mcu.Pin23=PB7
-Mcu.Pin24=VP_TIM21_VS_ClockSourceINT
-Mcu.Pin25=VP_TIM22_VS_ClockSourceINT
+Mcu.Pin24=VP_SYS_VS_Systick
+Mcu.Pin25=VP_TIM21_VS_ClockSourceINT
 Mcu.Pin3=PA1
 Mcu.Pin4=PA2
 Mcu.Pin5=PA3
@@ -98,7 +97,6 @@ NVIC.PendSV_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:false
 NVIC.SVC_IRQn=true\:0\:0\:false\:false\:true\:false\:false\:true
 NVIC.SysTick_IRQn=true\:0\:0\:true\:false\:true\:true\:true\:false
 NVIC.TIM21_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
-NVIC.TIM22_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 NVIC.USART2_IRQn=true\:0\:0\:false\:false\:true\:true\:true\:true
 PA0-CK_IN.Mode=IN0
 PA0-CK_IN.Signal=ADC_IN0
@@ -260,18 +258,15 @@ SPI1.VirtualType=VM_MASTER
 TIM21.IPParameters=Prescaler,Period
 TIM21.Period=100
 TIM21.Prescaler=32000
-TIM22.IPParameters=Prescaler
-TIM22.IPParametersWithoutCheck=Prescaler
-TIM22.Prescaler=UART_TIMER_PRESCALER
 USART2.BaudRate=UART_BAUDRATE
 USART2.IPParameters=VirtualMode-Asynchronous,VirtualMode-Hardware Flow Control (RS485),BaudRate
 USART2.IPParametersWithoutCheck=BaudRate
 USART2.VirtualMode-Asynchronous=VM_ASYNC
 USART2.VirtualMode-Hardware\ Flow\ Control\ (RS485)=VM_ASYNC
+VP_SYS_VS_Systick.Mode=SysTick
+VP_SYS_VS_Systick.Signal=SYS_VS_Systick
 VP_TIM21_VS_ClockSourceINT.Mode=Internal
 VP_TIM21_VS_ClockSourceINT.Signal=TIM21_VS_ClockSourceINT
-VP_TIM22_VS_ClockSourceINT.Mode=Internal
-VP_TIM22_VS_ClockSourceINT.Signal=TIM22_VS_ClockSourceINT
 board=NUCLEO-L031K6
 boardIOC=true
 isbadioc=false

+ 3 - 2
test/app.py

@@ -137,8 +137,9 @@ if __name__ == "__main__":
     #app.cmd_version()
     #app.cmd_version()
     # app.cmd_module_stop()
-    app.cmd_echo([65])
-    app.cmd_echo([97,98,99,100])
+    app.cmd_echo([65])    
+
+    app.cmd_echo([97,98,99,100])    
 
     app.cmd_set_param(1, PARAM_SAMPLERATE, 10)
     app.cmd_set_param(1, PARAM_RANGE, 1)