Compare commits
2 Commits
1771904eac
...
f23f852b6c
| Author | SHA1 | Date | |
|---|---|---|---|
| f23f852b6c | |||
| 16fd59535e |
@@ -43,7 +43,7 @@ extern "C" {
|
|||||||
/* Exported constants --------------------------------------------------------*/
|
/* Exported constants --------------------------------------------------------*/
|
||||||
/* USER CODE BEGIN EC */
|
/* USER CODE BEGIN EC */
|
||||||
extern volatile global_state_t state_g;
|
extern volatile global_state_t state_g;
|
||||||
|
extern TIM_HandleTypeDef htim2;
|
||||||
/* USER CODE END EC */
|
/* USER CODE END EC */
|
||||||
|
|
||||||
/* Exported macro ------------------------------------------------------------*/
|
/* Exported macro ------------------------------------------------------------*/
|
||||||
@@ -51,6 +51,8 @@ extern volatile global_state_t state_g;
|
|||||||
|
|
||||||
/* USER CODE END EM */
|
/* USER CODE END EM */
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Exported functions prototypes ---------------------------------------------*/
|
/* Exported functions prototypes ---------------------------------------------*/
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
|
|
||||||
|
|||||||
@@ -330,6 +330,7 @@ static void MX_TIM2_Init(void)
|
|||||||
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
TIM_ClockConfigTypeDef sClockSourceConfig = {0};
|
||||||
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
TIM_MasterConfigTypeDef sMasterConfig = {0};
|
||||||
TIM_IC_InitTypeDef sConfigIC = {0};
|
TIM_IC_InitTypeDef sConfigIC = {0};
|
||||||
|
TIM_OC_InitTypeDef sConfigOC = {0};
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_Init 1 */
|
/* USER CODE BEGIN TIM2_Init 1 */
|
||||||
|
|
||||||
@@ -353,6 +354,10 @@ static void MX_TIM2_Init(void)
|
|||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
|
||||||
@@ -372,10 +377,20 @@ static void MX_TIM2_Init(void)
|
|||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE;
|
||||||
|
sConfigOC.Pulse = 0;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
/* USER CODE BEGIN TIM2_Init 2 */
|
/* USER CODE BEGIN TIM2_Init 2 */
|
||||||
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
|
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);
|
||||||
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
|
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);
|
||||||
|
HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_3);
|
||||||
/* USER CODE END TIM2_Init 2 */
|
/* USER CODE END TIM2_Init 2 */
|
||||||
|
HAL_TIM_MspPostInit(&htim2);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,8 @@
|
|||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
/**
|
/**
|
||||||
* Initializes the Global MSP.
|
* Initializes the Global MSP.
|
||||||
*/
|
*/
|
||||||
@@ -117,6 +119,32 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
||||||
|
{
|
||||||
|
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||||
|
if(htim->Instance==TIM2)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspPostInit 0 */
|
||||||
|
|
||||||
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
/**TIM2 GPIO Configuration
|
||||||
|
PA2 ------> TIM2_CH3
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_2;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
GPIO_InitStruct.Alternate = GPIO_AF1_TIM2;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM2_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* @brief TIM_Base MSP De-Initialization
|
* @brief TIM_Base MSP De-Initialization
|
||||||
* This function freeze the hardware resources used in this example
|
* This function freeze the hardware resources used in this example
|
||||||
@@ -134,10 +162,11 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
|
|||||||
__HAL_RCC_TIM2_CLK_DISABLE();
|
__HAL_RCC_TIM2_CLK_DISABLE();
|
||||||
|
|
||||||
/**TIM2 GPIO Configuration
|
/**TIM2 GPIO Configuration
|
||||||
|
PA2 ------> TIM2_CH3
|
||||||
PA1 ------> TIM2_CH2
|
PA1 ------> TIM2_CH2
|
||||||
PA0 ------> TIM2_CH1
|
PA0 ------> TIM2_CH1
|
||||||
*/
|
*/
|
||||||
HAL_GPIO_DeInit(GPIOA, TIM2_CAM_Pin|TIM2_CRANK_Pin);
|
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|TIM2_CAM_Pin|TIM2_CRANK_Pin);
|
||||||
|
|
||||||
/* TIM2 interrupt DeInit */
|
/* TIM2 interrupt DeInit */
|
||||||
HAL_NVIC_DisableIRQ(TIM2_IRQn);
|
HAL_NVIC_DisableIRQ(TIM2_IRQn);
|
||||||
|
|||||||
@@ -8,9 +8,16 @@
|
|||||||
#include "macros.h"
|
#include "macros.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "ring_buffer.h"
|
#include "ring_buffer.h"
|
||||||
|
#include "stm32h747xx.h"
|
||||||
|
#include "stm32h7xx.h"
|
||||||
|
#include "stm32h7xx_hal_tim.h"
|
||||||
#include "tasks.h"
|
#include "tasks.h"
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
static inline void TIM2_CH3_SetOCMode(uint32_t oc_mode) {
|
||||||
|
MODIFY_REG(TIM2->CCMR2, TIM_CCMR2_OC3M | TIM_CCMR2_OC3M_3, oc_mode);
|
||||||
|
}
|
||||||
|
|
||||||
void crankHandler(void *argument) {
|
void crankHandler(void *argument) {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
osThreadFlagsWait(0x01, osFlagsWaitAny, osWaitForever);
|
osThreadFlagsWait(0x01, osFlagsWaitAny, osWaitForever);
|
||||||
@@ -72,6 +79,8 @@ void crankHandler(void *argument) {
|
|||||||
uint32_t d_spark = d1a * (45 - SPARK_ADVANCE) / 180;
|
uint32_t d_spark = d1a * (45 - SPARK_ADVANCE) / 180;
|
||||||
uint32_t t_spark = CRANK(0) + d_spark;
|
uint32_t t_spark = CRANK(0) + d_spark;
|
||||||
// TODO: schedule spark
|
// TODO: schedule spark
|
||||||
|
// __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_3, t_spark);
|
||||||
|
// TIM2_CH3_SetOCMode(t_spark);
|
||||||
} else if (state_g.crank_state == CYCLE_EXHAUST) {
|
} else if (state_g.crank_state == CYCLE_EXHAUST) {
|
||||||
uint32_t t_injection = CRANK(0) + (45+INJECTION_PHASE) * (CRANK(4) - CRANK(0)) / 720;
|
uint32_t t_injection = CRANK(0) + (45+INJECTION_PHASE) * (CRANK(4) - CRANK(0)) / 720;
|
||||||
//TODO Schedule injection
|
//TODO Schedule injection
|
||||||
|
|||||||
@@ -33,18 +33,19 @@ Mcu.Name=STM32H747XIHx
|
|||||||
Mcu.Package=TFBGA240
|
Mcu.Package=TFBGA240
|
||||||
Mcu.Pin0=PA14 (JTCK/SWCLK)
|
Mcu.Pin0=PA14 (JTCK/SWCLK)
|
||||||
Mcu.Pin1=PC15-OSC32_OUT (OSC32_OUT)
|
Mcu.Pin1=PC15-OSC32_OUT (OSC32_OUT)
|
||||||
Mcu.Pin10=VP_SYS_VS_Systick
|
Mcu.Pin10=VP_FREERTOS_M7_VS_CMSIS_V2
|
||||||
Mcu.Pin11=VP_SYS_M4_VS_Systick
|
Mcu.Pin11=VP_SYS_VS_Systick
|
||||||
Mcu.Pin12=VP_TIM2_VS_ClockSourceINT
|
Mcu.Pin12=VP_SYS_M4_VS_Systick
|
||||||
|
Mcu.Pin13=VP_TIM2_VS_ClockSourceINT
|
||||||
Mcu.Pin2=PC14-OSC32_IN (OSC32_IN)
|
Mcu.Pin2=PC14-OSC32_IN (OSC32_IN)
|
||||||
Mcu.Pin3=PA13 (JTMS/SWDIO)
|
Mcu.Pin3=PA13 (JTMS/SWDIO)
|
||||||
Mcu.Pin4=PI12
|
Mcu.Pin4=PI12
|
||||||
Mcu.Pin5=PH1-OSC_OUT (PH1)
|
Mcu.Pin5=PH1-OSC_OUT (PH1)
|
||||||
Mcu.Pin6=PH0-OSC_IN (PH0)
|
Mcu.Pin6=PH0-OSC_IN (PH0)
|
||||||
Mcu.Pin7=PA1
|
Mcu.Pin7=PA2
|
||||||
Mcu.Pin8=PA0
|
Mcu.Pin8=PA1
|
||||||
Mcu.Pin9=VP_FREERTOS_M7_VS_CMSIS_V2
|
Mcu.Pin9=PA0
|
||||||
Mcu.PinsNb=13
|
Mcu.PinsNb=14
|
||||||
Mcu.ThirdPartyNb=0
|
Mcu.ThirdPartyNb=0
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32H747XIHx
|
Mcu.UserName=STM32H747XIHx
|
||||||
@@ -94,6 +95,10 @@ PA14\ (JTCK/SWCLK).GPIOParameters=PinAttribute
|
|||||||
PA14\ (JTCK/SWCLK).Locked=true
|
PA14\ (JTCK/SWCLK).Locked=true
|
||||||
PA14\ (JTCK/SWCLK).PinAttribute=CortexM7
|
PA14\ (JTCK/SWCLK).PinAttribute=CortexM7
|
||||||
PA14\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
|
PA14\ (JTCK/SWCLK).Signal=DEBUG_JTCK-SWCLK
|
||||||
|
PA2.GPIOParameters=PinAttribute
|
||||||
|
PA2.Locked=true
|
||||||
|
PA2.PinAttribute=CortexM7
|
||||||
|
PA2.Signal=S_TIM2_CH3
|
||||||
PC14-OSC32_IN\ (OSC32_IN).GPIOParameters=PinAttribute
|
PC14-OSC32_IN\ (OSC32_IN).GPIOParameters=PinAttribute
|
||||||
PC14-OSC32_IN\ (OSC32_IN).Locked=true
|
PC14-OSC32_IN\ (OSC32_IN).Locked=true
|
||||||
PC14-OSC32_IN\ (OSC32_IN).Mode=LSE-External-Oscillator
|
PC14-OSC32_IN\ (OSC32_IN).Mode=LSE-External-Oscillator
|
||||||
@@ -245,14 +250,18 @@ SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Input_Capture1_from_TI1
|
|||||||
SH.S_TIM2_CH1_ETR.ConfNb=1
|
SH.S_TIM2_CH1_ETR.ConfNb=1
|
||||||
SH.S_TIM2_CH2.0=TIM2_CH2,Input_Capture2_from_TI2
|
SH.S_TIM2_CH2.0=TIM2_CH2,Input_Capture2_from_TI2
|
||||||
SH.S_TIM2_CH2.ConfNb=1
|
SH.S_TIM2_CH2.ConfNb=1
|
||||||
|
SH.S_TIM2_CH3.0=TIM2_CH3,Output Compare3 CH3
|
||||||
|
SH.S_TIM2_CH3.ConfNb=1
|
||||||
SYS.userName=SYS_M7
|
SYS.userName=SYS_M7
|
||||||
TIM2.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
|
TIM2.Channel-Input_Capture1_from_TI1=TIM_CHANNEL_1
|
||||||
TIM2.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
|
TIM2.Channel-Input_Capture2_from_TI2=TIM_CHANNEL_2
|
||||||
|
TIM2.Channel-Output\ Compare3\ CH3=TIM_CHANNEL_3
|
||||||
TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV4
|
TIM2.ClockDivision=TIM_CLOCKDIVISION_DIV4
|
||||||
TIM2.ICFilter_CH1=10
|
TIM2.ICFilter_CH1=10
|
||||||
TIM2.ICFilter_CH2=10
|
TIM2.ICFilter_CH2=10
|
||||||
TIM2.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING
|
TIM2.ICPolarity_CH1=TIM_INPUTCHANNELPOLARITY_FALLING
|
||||||
TIM2.IPParameters=ClockDivision,Prescaler,Channel-Input_Capture1_from_TI1,ICPolarity_CH1,Channel-Input_Capture2_from_TI2,ICFilter_CH2,ICFilter_CH1
|
TIM2.IPParameters=ClockDivision,Prescaler,Channel-Input_Capture1_from_TI1,ICPolarity_CH1,Channel-Input_Capture2_from_TI2,ICFilter_CH2,ICFilter_CH1,Channel-Output Compare3 CH3,OCMode_3
|
||||||
|
TIM2.OCMode_3=TIM_OCMODE_FORCED_INACTIVE
|
||||||
TIM2.Prescaler=0
|
TIM2.Prescaler=0
|
||||||
VP_FREERTOS_M7_VS_CMSIS_V2.Mode=CMSIS_V2
|
VP_FREERTOS_M7_VS_CMSIS_V2.Mode=CMSIS_V2
|
||||||
VP_FREERTOS_M7_VS_CMSIS_V2.Signal=FREERTOS_M7_VS_CMSIS_V2
|
VP_FREERTOS_M7_VS_CMSIS_V2.Signal=FREERTOS_M7_VS_CMSIS_V2
|
||||||
|
|||||||
Reference in New Issue
Block a user