]> git.leonardobizzoni.com Git - pioneer-stm32/commitdiff
add fault interrupts, fix #6
authorFederica Di Lauro <federicadilauro1998@gmail.com>
Mon, 2 Mar 2020 15:34:46 +0000 (16:34 +0100)
committerFederica Di Lauro <federicadilauro1998@gmail.com>
Mon, 2 Mar 2020 15:34:46 +0000 (16:34 +0100)
otto_controller/.cproject
otto_controller/.mxproject
otto_controller/Core/Inc/main.h
otto_controller/Core/Src/gpio.c
otto_controller/Core/Src/main.cpp
otto_controller/otto_controller.ioc

index bcf34bee1d8de912bb2ea19ed8320ac233b27bc3..d467a48f5fb4814416310a1593c80a70dd46996e 100644 (file)
@@ -44,8 +44,8 @@
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Core/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
-                                                                       <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                        <listOptionValue builtIn="false" value="../Core/Inc/protobuf"/>
+                                                                       <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.otherflags.978301265" name="Other flags" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.option.otherflags" useByScannerDiscovery="false" valueType="stringList"/>
                                                                <inputType id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c.1784720711" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.c.compiler.input.c"/>
@@ -58,8 +58,8 @@
                                                                        <listOptionValue builtIn="false" value="../Drivers/CMSIS/Device/ST/STM32F7xx/Include"/>
                                                                        <listOptionValue builtIn="false" value="../Core/Inc"/>
                                                                        <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc"/>
-                                                                       <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                        <listOptionValue builtIn="false" value="../Core/Inc/protobuf"/>
+                                                                       <listOptionValue builtIn="false" value="../Drivers/STM32F7xx_HAL_Driver/Inc/Legacy"/>
                                                                </option>
                                                                <option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols.1826209638" name="Define symbols (-D)" superClass="com.st.stm32cube.ide.mcu.gnu.managedbuild.tool.cpp.compiler.option.definedsymbols" useByScannerDiscovery="false" valueType="definedSymbols">
                                                                        <listOptionValue builtIn="false" value="USE_HAL_DRIVER"/>
index b4aeebb2202657102d37f309f8ee12e378b315a7..68ed7a12fb3dbf32b9c71532404e712a0889a145 100644 (file)
@@ -20,8 +20,6 @@ SourceFiles#4=/home/fdila/Projects/otto/otto_controller/Core/Src/stm32f7xx_it.c
 SourceFiles#5=/home/fdila/Projects/otto/otto_controller/Core/Src/stm32f7xx_hal_msp.c\r
 HeaderFiles#6=/home/fdila/Projects/otto/otto_controller/Core/Inc/main.h\r
 SourceFiles#6=/home/fdila/Projects/otto/otto_controller/Core/Src/main.c\r
-HeaderFiles=;\r
-SourceFiles=;\r
 \r
 [PreviousLibFiles]\r
 LibFiles=Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_exti.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.c;Drivers/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart_ex.c;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_cortex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_tim_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_rcc_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_flash_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_gpio_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_dma_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_pwr_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_def.h;Drivers/STM32F7xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_i2c_ex.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_exti.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart.h;Drivers/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_uart_ex.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f767xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Include/system_stm32f7xx.h;Drivers/CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.c;Drivers/CMSIS/Include/cmsis_gcc.h;Drivers/CMSIS/Include/core_cm3.h;Drivers/CMSIS/Include/core_armv8mml.h;Drivers/CMSIS/Include/cmsis_armcc.h;Drivers/CMSIS/Include/core_sc300.h;Drivers/CMSIS/Include/core_cm33.h;Drivers/CMSIS/Include/core_cm0.h;Drivers/CMSIS/Include/core_cm1.h;Drivers/CMSIS/Include/tz_context.h;Drivers/CMSIS/Include/cmsis_armclang.h;Drivers/CMSIS/Include/core_cm7.h;Drivers/CMSIS/Include/cmsis_compiler.h;Drivers/CMSIS/Include/cmsis_iccarm.h;Drivers/CMSIS/Include/core_cm23.h;Drivers/CMSIS/Include/core_armv8mbl.h;Drivers/CMSIS/Include/core_cm0plus.h;Drivers/CMSIS/Include/mpu_armv7.h;Drivers/CMSIS/Include/mpu_armv8.h;Drivers/CMSIS/Include/cmsis_version.h;Drivers/CMSIS/Include/core_sc000.h;Drivers/CMSIS/Include/core_cm4.h;\r
index fb0a3d8d29a9e8a7dc65df8057ad36d399a7b04c..80943f3956f409f5a055d9b3c4706a309a2ac5da 100644 (file)
@@ -58,6 +58,9 @@ void Error_Handler(void);
 /* USER CODE END EFP */\r
 \r
 /* Private defines -----------------------------------------------------------*/\r
+#define user_button_Pin GPIO_PIN_13\r
+#define user_button_GPIO_Port GPIOC\r
+#define user_button_EXTI_IRQn EXTI15_10_IRQn\r
 #define current2_Pin GPIO_PIN_0\r
 #define current2_GPIO_Port GPIOC\r
 #define encoder_dx1_Pin GPIO_PIN_0\r
index b3dac9b9000b889e1e78c9a7e4d2b91283dae34f..799896215f387e3698128f99dd96440cbd0d0860 100644 (file)
@@ -56,11 +56,11 @@ void MX_GPIO_Init(void)
   /*Configure GPIO pin Output Level */\r
   HAL_GPIO_WritePin(GPIOF, sleep2_Pin|sleep1_Pin, GPIO_PIN_SET);\r
 \r
-  /*Configure GPIO pin : PC13 */\r
-  GPIO_InitStruct.Pin = GPIO_PIN_13;\r
+  /*Configure GPIO pin : PtPin */\r
+  GPIO_InitStruct.Pin = user_button_Pin;\r
   GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;\r
   GPIO_InitStruct.Pull = GPIO_NOPULL;\r
-  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);\r
+  HAL_GPIO_Init(user_button_GPIO_Port, &GPIO_InitStruct);\r
 \r
   /*Configure GPIO pin : PtPin */\r
   GPIO_InitStruct.Pin = current2_Pin;\r
@@ -76,8 +76,8 @@ void MX_GPIO_Init(void)
 \r
   /*Configure GPIO pin : PtPin */\r
   GPIO_InitStruct.Pin = fault2_Pin;\r
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;\r
-  GPIO_InitStruct.Pull = GPIO_NOPULL;\r
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;\r
+  GPIO_InitStruct.Pull = GPIO_PULLUP;\r
   HAL_GPIO_Init(fault2_GPIO_Port, &GPIO_InitStruct);\r
 \r
   /*Configure GPIO pins : PFPin PFPin */\r
@@ -96,8 +96,8 @@ void MX_GPIO_Init(void)
 \r
   /*Configure GPIO pin : PtPin */\r
   GPIO_InitStruct.Pin = fault1_Pin;\r
-  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;\r
-  GPIO_InitStruct.Pull = GPIO_NOPULL;\r
+  GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;\r
+  GPIO_InitStruct.Pull = GPIO_PULLUP;\r
   HAL_GPIO_Init(fault1_GPIO_Port, &GPIO_InitStruct);\r
 \r
   /* EXTI interrupt init*/\r
index 06216ed0d39e9dd138decea0113218c4ef76dc7d..9d51e08f1e7e730ff5d34eb42b12b07a5c95fb64 100644 (file)
@@ -129,14 +129,12 @@ static void MX_NVIC_Init(void);
 /* USER CODE END 0 */\r
 \r
 /**\r
-  * @brief  The application entry point.\r
-  * @retval int\r
-  */\r
-int main(void)\r
-{\r
+ * @brief  The application entry point.\r
+ * @retval int\r
+ */\r
+int main(void) {\r
   /* USER CODE BEGIN 1 */\r
   /* USER CODE END 1 */\r
-  \r
 \r
   /* MCU Configuration--------------------------------------------------------*/\r
 \r
@@ -194,7 +192,7 @@ int main(void)
 \r
   //Enables UART RX interrupt\r
   HAL_UART_Receive_DMA(&huart6, (uint8_t*) &proto_buffer_rx,\r
-                       VelocityCommand_size);\r
+  VelocityCommand_size);\r
 \r
   /* USER CODE END 2 */\r
 \r
@@ -209,56 +207,51 @@ int main(void)
 }\r
 \r
 /**\r
-  * @brief System Clock Configuration\r
-  * @retval None\r
-  */\r
-void SystemClock_Config(void)\r
-{\r
-  RCC_OscInitTypeDef RCC_OscInitStruct = {0};\r
-  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};\r
-  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};\r
+ * @brief System Clock Configuration\r
+ * @retval None\r
+ */\r
+void SystemClock_Config(void) {\r
+  RCC_OscInitTypeDef RCC_OscInitStruct = { 0 };\r
+  RCC_ClkInitTypeDef RCC_ClkInitStruct = { 0 };\r
+  RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = { 0 };\r
 \r
   /** Configure the main internal regulator output voltage \r
-  */\r
+   */\r
   __HAL_RCC_PWR_CLK_ENABLE();\r
   __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE3);\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-  */\r
+   */\r
   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;\r
   RCC_OscInitStruct.HSIState = RCC_HSI_ON;\r
   RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;\r
   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;\r
-  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)\r
-  {\r
+  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) {\r
     Error_Handler();\r
   }\r
   /** Initializes the CPU, AHB and APB busses clocks \r
-  */\r
-  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK\r
-                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;\r
+   */\r
+  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK\r
+      | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;\r
   RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;\r
   RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;\r
   RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;\r
   RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;\r
 \r
-  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)\r
-  {\r
+  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) {\r
     Error_Handler();\r
   }\r
   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_USART6;\r
   PeriphClkInitStruct.Usart6ClockSelection = RCC_USART6CLKSOURCE_PCLK2;\r
-  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)\r
-  {\r
+  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK) {\r
     Error_Handler();\r
   }\r
 }\r
 \r
 /**\r
-  * @brief NVIC Configuration.\r
-  * @retval None\r
-  */\r
-static void MX_NVIC_Init(void)\r
-{\r
+ * @brief NVIC Configuration.\r
+ * @retval None\r
+ */\r
+static void MX_NVIC_Init(void) {\r
   /* TIM3_IRQn interrupt configuration */\r
   HAL_NVIC_SetPriority(TIM3_IRQn, 2, 1);\r
   HAL_NVIC_EnableIRQ(TIM3_IRQn);\r
@@ -295,7 +288,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
   //TIMER 10Hz Transmit\r
   if (htim->Instance == TIM6) {\r
 \r
-    pb_ostream_t stream = pb_ostream_from_buffer(proto_buffer_tx, sizeof(proto_buffer_tx));\r
+    pb_ostream_t stream = pb_ostream_from_buffer(proto_buffer_tx,\r
+                                                 sizeof(proto_buffer_tx));\r
 \r
     float left_wheel = left_encoder.GetLinearVelocity();\r
     float right_wheel = right_encoder.GetLinearVelocity();\r
@@ -313,7 +307,8 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
 \r
     pb_encode(&stream, StatusMessage_fields, &status_msg);\r
 \r
-    HAL_UART_Transmit_DMA(&huart6,(uint8_t*) &proto_buffer_tx, StatusMessage_size);\r
+    HAL_UART_Transmit_DMA(&huart6, (uint8_t*) &proto_buffer_tx,\r
+    StatusMessage_size);\r
   }\r
 }\r
 \r
@@ -330,7 +325,7 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) {
   float angular_velocity;\r
 \r
   pb_istream_t stream = pb_istream_from_buffer(proto_buffer_rx,\r
-                                               VelocityCommand_size);\r
+  VelocityCommand_size);\r
 \r
   bool status = pb_decode(&stream, VelocityCommand_fields, &vel_cmd);\r
 \r
@@ -349,32 +344,82 @@ void HAL_UART_RxCpltCallback(UART_HandleTypeDef *UartHandle) {
     float cross_setpoint = left_setpoint - right_setpoint;\r
     cross_pid.set(cross_setpoint);\r
 \r
-\r
   }\r
 \r
   HAL_UART_Receive_DMA(&huart6, (uint8_t*) &proto_buffer_rx,\r
-                       VelocityCommand_size);\r
+  VelocityCommand_size);\r
 }\r
 \r
 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {\r
   //Blue user button on the NUCLEO board\r
-  if (GPIO_Pin == GPIO_PIN_13) {\r
+  if (GPIO_Pin == user_button_Pin) {\r
     if (mode == 0) {\r
       mode = 1;\r
       //Enables TIM3 interrupt (used for PID control)\r
       HAL_TIM_Base_Start_IT(&htim3);\r
-\r
     }\r
+\r
+  } else if (GPIO_Pin == fault1_Pin) {\r
+    left_motor.brake();\r
+    right_motor.brake();\r
+    //stop TIM3 interrupt (used for PID control)\r
+    HAL_TIM_Base_Stop_IT(&htim3);\r
+\r
+    //Send status message with error code\r
+    status_msg.linear_velocity = 0;\r
+    status_msg.angular_velocity = 0;\r
+\r
+    float current_tx_millis = HAL_GetTick();\r
+    status_msg.delta_millis = current_tx_millis - previous_tx_millis;\r
+    previous_tx_millis = current_tx_millis;\r
+\r
+    status_msg.status = 4;\r
+\r
+    pb_ostream_t stream = pb_ostream_from_buffer(proto_buffer_tx,\r
+                                                 sizeof(proto_buffer_tx));\r
+    pb_encode(&stream, StatusMessage_fields, &status_msg);\r
+\r
+    HAL_UART_Transmit_DMA(&huart6, (uint8_t*) &proto_buffer_tx,\r
+    StatusMessage_size);\r
+\r
+    //loops forever, manual reset is needed\r
+    while (1);\r
+\r
+  } else if (GPIO_Pin == fault2_Pin) {\r
+    left_motor.brake();\r
+    right_motor.brake();\r
+    //stop TIM3 interrupt (used for PID control)\r
+    HAL_TIM_Base_Stop_IT(&htim3);\r
+\r
+    //Send status message with error code\r
+    status_msg.linear_velocity = 0;\r
+    status_msg.angular_velocity = 0;\r
+\r
+    float current_tx_millis = HAL_GetTick();\r
+    status_msg.delta_millis = current_tx_millis - previous_tx_millis;\r
+    previous_tx_millis = current_tx_millis;\r
+\r
+    status_msg.status = 5;\r
+\r
+    pb_ostream_t stream = pb_ostream_from_buffer(proto_buffer_tx,\r
+                                                 sizeof(proto_buffer_tx));\r
+    pb_encode(&stream, StatusMessage_fields, &status_msg);\r
+\r
+    HAL_UART_Transmit_DMA(&huart6, (uint8_t*) &proto_buffer_tx,\r
+    StatusMessage_size);\r
+\r
+    //loops forever, manual reset is needed\r
+    while (1);\r
   }\r
+\r
 }\r
 /* USER CODE END 4 */\r
 \r
 /**\r
-  * @brief  This function is executed in case of error occurrence.\r
-  * @retval None\r
-  */\r
-void Error_Handler(void)\r
-{\r
+ * @brief  This function is executed in case of error occurrence.\r
+ * @retval None\r
+ */\r
+void Error_Handler(void) {\r
   /* USER CODE BEGIN Error_Handler_Debug */\r
   /* User can add his own implementation to report the HAL error return state */\r
 \r
index cf90633efce1cc0709e1fe4bc8eea61464b24c55..2f5322d29522bb63d562d2d9bdbb87244722e86e 100644 (file)
@@ -105,10 +105,12 @@ PA5.GPIOParameters=GPIO_Label
 PA5.GPIO_Label=encoder_sx1
 PA5.Locked=true
 PA5.Signal=S_TIM2_CH1_ETR
-PA6.GPIOParameters=GPIO_Label
+PA6.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
 PA6.GPIO_Label=fault2
+PA6.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PA6.GPIO_PuPd=GPIO_PULLUP
 PA6.Locked=true
-PA6.Signal=GPIO_Input
+PA6.Signal=GPXTI6
 PB3.GPIOParameters=GPIO_Label
 PB3.GPIO_Label=encoder_sx2
 PB3.Locked=true
@@ -117,6 +119,8 @@ PC0.GPIOParameters=GPIO_Label
 PC0.GPIO_Label=current2
 PC0.Locked=true
 PC0.Signal=GPIO_Analog
+PC13.GPIOParameters=GPIO_Label
+PC13.GPIO_Label=user_button
 PC13.Locked=true
 PC13.Signal=GPXTI13
 PC6.Mode=Asynchronous
@@ -139,10 +143,12 @@ PD15.GPIOParameters=GPIO_Label
 PD15.GPIO_Label=pwm1
 PD15.Locked=true
 PD15.Signal=S_TIM4_CH4
-PE9.GPIOParameters=GPIO_Label
+PE9.GPIOParameters=GPIO_PuPd,GPIO_Label,GPIO_ModeDefaultEXTI
 PE9.GPIO_Label=fault1
+PE9.GPIO_ModeDefaultEXTI=GPIO_MODE_IT_FALLING
+PE9.GPIO_PuPd=GPIO_PULLUP
 PE9.Locked=true
-PE9.Signal=GPIO_Input
+PE9.Signal=GPXTI9
 PF12.GPIOParameters=GPIO_Label
 PF12.GPIO_Label=dir2
 PF12.Locked=true
@@ -224,6 +230,10 @@ RCC.VCOOutputFreq_Value=192000000
 RCC.VCOSAIOutputFreq_Value=192000000
 SH.GPXTI13.0=GPIO_EXTI13
 SH.GPXTI13.ConfNb=1
+SH.GPXTI6.0=GPIO_EXTI6
+SH.GPXTI6.ConfNb=1
+SH.GPXTI9.0=GPIO_EXTI9
+SH.GPXTI9.ConfNb=1
 SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Encoder_Interface
 SH.S_TIM2_CH1_ETR.ConfNb=1
 SH.S_TIM2_CH2.0=TIM2_CH2,Encoder_Interface