sine works
This commit is contained in:
@ -49,6 +49,10 @@
|
|||||||
#define LED4_PIN_GPIO_Port GPIOE
|
#define LED4_PIN_GPIO_Port GPIOE
|
||||||
#define LED_PIN_Pin GPIO_PIN_13
|
#define LED_PIN_Pin GPIO_PIN_13
|
||||||
#define LED_PIN_GPIO_Port GPIOC
|
#define LED_PIN_GPIO_Port GPIOC
|
||||||
|
#define BridgePolarity_Pin GPIO_PIN_0
|
||||||
|
#define BridgePolarity_GPIO_Port GPIOC
|
||||||
|
#define ERROR_PIN_Pin GPIO_PIN_10
|
||||||
|
#define ERROR_PIN_GPIO_Port GPIOB
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
/*#define HAL_CORTEX_MODULE_ENABLED */
|
/*#define HAL_CORTEX_MODULE_ENABLED */
|
||||||
/*#define HAL_CRC_MODULE_ENABLED */
|
/*#define HAL_CRC_MODULE_ENABLED */
|
||||||
/*#define HAL_DAC_MODULE_ENABLED */
|
/*#define HAL_DAC_MODULE_ENABLED */
|
||||||
/*#define HAL_DMA_MODULE_ENABLED */
|
#define HAL_DMA_MODULE_ENABLED
|
||||||
/*#define HAL_ETH_MODULE_ENABLED */
|
/*#define HAL_ETH_MODULE_ENABLED */
|
||||||
/*#define HAL_FLASH_MODULE_ENABLED */
|
/*#define HAL_FLASH_MODULE_ENABLED */
|
||||||
#define HAL_GPIO_MODULE_ENABLED
|
#define HAL_GPIO_MODULE_ENABLED
|
||||||
|
@ -54,7 +54,9 @@ void SVC_Handler(void);
|
|||||||
void DebugMon_Handler(void);
|
void DebugMon_Handler(void);
|
||||||
void PendSV_Handler(void);
|
void PendSV_Handler(void);
|
||||||
void SysTick_Handler(void);
|
void SysTick_Handler(void);
|
||||||
|
void DMA1_Channel5_IRQHandler(void);
|
||||||
void TIM1_CC_IRQHandler(void);
|
void TIM1_CC_IRQHandler(void);
|
||||||
|
void TIM2_IRQHandler(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,9 @@ RTC_HandleTypeDef hrtc;
|
|||||||
|
|
||||||
TIM_HandleTypeDef htim1;
|
TIM_HandleTypeDef htim1;
|
||||||
TIM_HandleTypeDef htim2;
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -52,9 +55,12 @@ TIM_HandleTypeDef htim2;
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_DMA_Init(void);
|
||||||
static void MX_RTC_Init(void);
|
static void MX_RTC_Init(void);
|
||||||
static void MX_TIM1_Init(void);
|
static void MX_TIM1_Init(void);
|
||||||
static void MX_TIM2_Init(void);
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
|
||||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
@ -85,9 +91,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_DMA_Init();
|
||||||
MX_RTC_Init();
|
MX_RTC_Init();
|
||||||
MX_TIM1_Init();
|
MX_TIM1_Init();
|
||||||
MX_TIM2_Init();
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
@ -241,7 +250,7 @@ static void MX_TIM1_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
|
||||||
sConfigOC.Pulse = 1000;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
@ -280,7 +289,7 @@ static void MX_TIM2_Init(void)
|
|||||||
htim2.Instance = TIM2;
|
htim2.Instance = TIM2;
|
||||||
htim2.Init.Prescaler = 72;
|
htim2.Init.Prescaler = 72;
|
||||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim2.Init.Period = 1000;
|
htim2.Init.Period = 5000;
|
||||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
@ -293,7 +302,7 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -305,23 +314,11 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
sConfigOC.Pulse = 0;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -330,6 +327,119 @@ static void MX_TIM2_Init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 72;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 5000;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 2000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 72;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 5000;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 3000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim4);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable DMA controller clock
|
||||||
|
*/
|
||||||
|
static void MX_DMA_Init(void)
|
||||||
|
{
|
||||||
|
/* DMA controller clock enable */
|
||||||
|
__HAL_RCC_DMA1_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* DMA interrupt init */
|
||||||
|
/* DMA1_Channel5_IRQn interrupt configuration */
|
||||||
|
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -346,12 +456,17 @@ static void MX_GPIO_Init(void)
|
|||||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
||||||
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
||||||
@ -359,11 +474,17 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_PIN_Pin */
|
/*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_PIN_Pin;
|
GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_PIN_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pin : ERROR_PIN_Pin */
|
||||||
|
GPIO_InitStruct.Pin = ERROR_PIN_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
extern DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
|
|
||||||
extern void Error_Handler(void);
|
extern void Error_Handler(void);
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
@ -138,10 +140,53 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
|||||||
/* USER CODE END TIM2_MspInit 0 */
|
/* USER CODE END TIM2_MspInit 0 */
|
||||||
/* Peripheral clock enable */
|
/* Peripheral clock enable */
|
||||||
__HAL_RCC_TIM2_CLK_ENABLE();
|
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* Peripheral DMA init*/
|
||||||
|
|
||||||
|
hdma_tim2_ch1.Instance = DMA1_Channel5;
|
||||||
|
hdma_tim2_ch1.Init.Direction = DMA_MEMORY_TO_PERIPH;
|
||||||
|
hdma_tim2_ch1.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
|
hdma_tim2_ch1.Init.MemInc = DMA_MINC_ENABLE;
|
||||||
|
hdma_tim2_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||||
|
hdma_tim2_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||||
|
hdma_tim2_ch1.Init.Mode = DMA_CIRCULAR;
|
||||||
|
hdma_tim2_ch1.Init.Priority = DMA_PRIORITY_LOW;
|
||||||
|
if (HAL_DMA_Init(&hdma_tim2_ch1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
__HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC1],hdma_tim2_ch1);
|
||||||
|
|
||||||
|
/* Peripheral interrupt init */
|
||||||
|
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||||
/* USER CODE BEGIN TIM2_MspInit 1 */
|
/* USER CODE BEGIN TIM2_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspInit 1 */
|
/* USER CODE END TIM2_MspInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,11 +222,9 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
|||||||
/* USER CODE END TIM2_MspPostInit 0 */
|
/* USER CODE END TIM2_MspPostInit 0 */
|
||||||
|
|
||||||
/**TIM2 GPIO Configuration
|
/**TIM2 GPIO Configuration
|
||||||
PA0-WKUP ------> TIM2_CH1
|
PA0-WKUP ------> TIM2_CH1
|
||||||
PA1 ------> TIM2_CH2
|
|
||||||
PA2 ------> TIM2_CH3
|
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
|
GPIO_InitStruct.Pin = GPIO_PIN_0;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
@ -190,6 +233,44 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
|||||||
|
|
||||||
/* USER CODE END TIM2_MspPostInit 1 */
|
/* USER CODE END TIM2_MspPostInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PA6 ------> TIM3_CH1
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PD12 ------> TIM4_CH1
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_12;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM4_ENABLE();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,10 +299,39 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
|
|||||||
/* USER CODE END TIM2_MspDeInit 0 */
|
/* USER CODE END TIM2_MspDeInit 0 */
|
||||||
/* Peripheral clock disable */
|
/* Peripheral clock disable */
|
||||||
__HAL_RCC_TIM2_CLK_DISABLE();
|
__HAL_RCC_TIM2_CLK_DISABLE();
|
||||||
|
|
||||||
|
/* Peripheral DMA DeInit*/
|
||||||
|
HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC1]);
|
||||||
|
|
||||||
|
/* Peripheral interrupt DeInit*/
|
||||||
|
HAL_NVIC_DisableIRQ(TIM2_IRQn);
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspDeInit 1 */
|
/* USER CODE END TIM2_MspDeInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM3_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM4_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,9 @@
|
|||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/* External variables --------------------------------------------------------*/
|
/* External variables --------------------------------------------------------*/
|
||||||
|
extern DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
extern TIM_HandleTypeDef htim1;
|
extern TIM_HandleTypeDef htim1;
|
||||||
|
extern TIM_HandleTypeDef htim2;
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
||||||
@ -184,6 +186,20 @@ void SysTick_Handler(void)
|
|||||||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
/* please refer to the startup file (startup_stm32f1xx.s). */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles DMA1 channel5 global interrupt.
|
||||||
|
*/
|
||||||
|
void DMA1_Channel5_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END DMA1_Channel5_IRQn 0 */
|
||||||
|
HAL_DMA_IRQHandler(&hdma_tim2_ch1);
|
||||||
|
/* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END DMA1_Channel5_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function handles TIM1 capture compare interrupt.
|
* @brief This function handles TIM1 capture compare interrupt.
|
||||||
*/
|
*/
|
||||||
@ -198,6 +214,20 @@ void TIM1_CC_IRQHandler(void)
|
|||||||
/* USER CODE END TIM1_CC_IRQn 1 */
|
/* USER CODE END TIM1_CC_IRQn 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles TIM2 global interrupt.
|
||||||
|
*/
|
||||||
|
void TIM2_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_IRQn 0 */
|
||||||
|
HAL_TIM_IRQHandler(&htim2);
|
||||||
|
/* USER CODE BEGIN TIM2_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -1,40 +1,59 @@
|
|||||||
#MicroXplorer Configuration settings - do not modify
|
#MicroXplorer Configuration settings - do not modify
|
||||||
|
Dma.Request0=TIM2_CH1
|
||||||
|
Dma.RequestsNb=1
|
||||||
|
Dma.TIM2_CH1.0.Direction=DMA_MEMORY_TO_PERIPH
|
||||||
|
Dma.TIM2_CH1.0.Instance=DMA1_Channel5
|
||||||
|
Dma.TIM2_CH1.0.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
|
||||||
|
Dma.TIM2_CH1.0.MemInc=DMA_MINC_ENABLE
|
||||||
|
Dma.TIM2_CH1.0.Mode=DMA_CIRCULAR
|
||||||
|
Dma.TIM2_CH1.0.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
|
||||||
|
Dma.TIM2_CH1.0.PeriphInc=DMA_PINC_DISABLE
|
||||||
|
Dma.TIM2_CH1.0.Priority=DMA_PRIORITY_LOW
|
||||||
|
Dma.TIM2_CH1.0.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphDataAlignment,MemDataAlignment,Mode,Priority
|
||||||
File.Version=6
|
File.Version=6
|
||||||
KeepUserPlacement=false
|
KeepUserPlacement=false
|
||||||
Mcu.Family=STM32F1
|
Mcu.Family=STM32F1
|
||||||
Mcu.IP0=NVIC
|
Mcu.IP0=DMA
|
||||||
Mcu.IP1=RCC
|
Mcu.IP1=NVIC
|
||||||
Mcu.IP2=RTC
|
Mcu.IP2=RCC
|
||||||
Mcu.IP3=SYS
|
Mcu.IP3=RTC
|
||||||
Mcu.IP4=TIM1
|
Mcu.IP4=SYS
|
||||||
Mcu.IP5=TIM2
|
Mcu.IP5=TIM1
|
||||||
Mcu.IPNb=6
|
Mcu.IP6=TIM2
|
||||||
|
Mcu.IP7=TIM3
|
||||||
|
Mcu.IP8=TIM4
|
||||||
|
Mcu.IPNb=9
|
||||||
Mcu.Name=STM32F103V(C-D-E)Tx
|
Mcu.Name=STM32F103V(C-D-E)Tx
|
||||||
Mcu.Package=LQFP100
|
Mcu.Package=LQFP100
|
||||||
Mcu.Pin0=PE4
|
Mcu.Pin0=PE4
|
||||||
Mcu.Pin1=PE5
|
Mcu.Pin1=PE5
|
||||||
Mcu.Pin10=PE11
|
Mcu.Pin10=PE11
|
||||||
Mcu.Pin11=PE13
|
Mcu.Pin11=PE13
|
||||||
Mcu.Pin12=PA13
|
Mcu.Pin12=PB10
|
||||||
Mcu.Pin13=PA14
|
Mcu.Pin13=PD12
|
||||||
Mcu.Pin14=VP_RTC_No_RTC_Output
|
Mcu.Pin14=PA13
|
||||||
Mcu.Pin15=VP_SYS_VS_Systick
|
Mcu.Pin15=PA14
|
||||||
Mcu.Pin16=VP_TIM1_VS_ClockSourceINT
|
Mcu.Pin16=VP_RTC_No_RTC_Output
|
||||||
Mcu.Pin17=VP_TIM2_VS_ClockSourceINT
|
Mcu.Pin17=VP_SYS_VS_Systick
|
||||||
|
Mcu.Pin18=VP_TIM1_VS_ClockSourceINT
|
||||||
|
Mcu.Pin19=VP_TIM2_VS_ClockSourceINT
|
||||||
Mcu.Pin2=PE6
|
Mcu.Pin2=PE6
|
||||||
|
Mcu.Pin20=VP_TIM3_VS_ClockSourceINT
|
||||||
|
Mcu.Pin21=VP_TIM4_VS_ClockSourceINT
|
||||||
Mcu.Pin3=PC13-TAMPER-RTC
|
Mcu.Pin3=PC13-TAMPER-RTC
|
||||||
Mcu.Pin4=OSC_IN
|
Mcu.Pin4=OSC_IN
|
||||||
Mcu.Pin5=OSC_OUT
|
Mcu.Pin5=OSC_OUT
|
||||||
Mcu.Pin6=PA0-WKUP
|
Mcu.Pin6=PC0
|
||||||
Mcu.Pin7=PA1
|
Mcu.Pin7=PA0-WKUP
|
||||||
Mcu.Pin8=PA2
|
Mcu.Pin8=PA6
|
||||||
Mcu.Pin9=PE9
|
Mcu.Pin9=PE9
|
||||||
Mcu.PinsNb=18
|
Mcu.PinsNb=22
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32F103VCTx
|
Mcu.UserName=STM32F103VCTx
|
||||||
MxCube.Version=4.16.1
|
MxCube.Version=4.16.1
|
||||||
MxDb.Version=DB.4.0.161
|
MxDb.Version=DB.4.0.161
|
||||||
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.BusFault_IRQn=true\:0\:0\:false\:false\:true
|
||||||
|
NVIC.DMA1_Channel5_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.DebugMonitor_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.HardFault_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.MemoryManagement_IRQn=true\:0\:0\:false\:false\:true
|
||||||
@ -44,6 +63,7 @@ NVIC.PriorityGroup=NVIC_PRIORITYGROUP_4
|
|||||||
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.SVCall_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.SysTick_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.TIM1_CC_IRQn=true\:0\:0\:false\:false\:true
|
||||||
|
NVIC.TIM2_IRQn=true\:0\:0\:false\:false\:true
|
||||||
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true
|
NVIC.UsageFault_IRQn=true\:0\:0\:false\:false\:true
|
||||||
OSC_IN.Mode=HSE-External-Oscillator
|
OSC_IN.Mode=HSE-External-Oscillator
|
||||||
OSC_IN.Signal=RCC_OSC_IN
|
OSC_IN.Signal=RCC_OSC_IN
|
||||||
@ -51,12 +71,19 @@ OSC_OUT.Mode=HSE-External-Oscillator
|
|||||||
OSC_OUT.Signal=RCC_OSC_OUT
|
OSC_OUT.Signal=RCC_OSC_OUT
|
||||||
PA0-WKUP.Locked=true
|
PA0-WKUP.Locked=true
|
||||||
PA0-WKUP.Signal=S_TIM2_CH1_ETR
|
PA0-WKUP.Signal=S_TIM2_CH1_ETR
|
||||||
PA1.Signal=S_TIM2_CH2
|
|
||||||
PA13.Mode=Serial_Wire
|
PA13.Mode=Serial_Wire
|
||||||
PA13.Signal=SYS_JTMS-SWDIO
|
PA13.Signal=SYS_JTMS-SWDIO
|
||||||
PA14.Mode=Serial_Wire
|
PA14.Mode=Serial_Wire
|
||||||
PA14.Signal=SYS_JTCK-SWCLK
|
PA14.Signal=SYS_JTCK-SWCLK
|
||||||
PA2.Signal=S_TIM2_CH3
|
PA6.Signal=S_TIM3_CH1
|
||||||
|
PB10.GPIOParameters=GPIO_Label
|
||||||
|
PB10.GPIO_Label=ERROR_PIN
|
||||||
|
PB10.Locked=true
|
||||||
|
PB10.Signal=GPIO_Output
|
||||||
|
PC0.GPIOParameters=GPIO_Label
|
||||||
|
PC0.GPIO_Label=BridgePolarity
|
||||||
|
PC0.Locked=true
|
||||||
|
PC0.Signal=GPIO_Output
|
||||||
PC13-TAMPER-RTC.GPIOParameters=GPIO_Label
|
PC13-TAMPER-RTC.GPIOParameters=GPIO_Label
|
||||||
PC13-TAMPER-RTC.GPIO_Label=LED_PIN
|
PC13-TAMPER-RTC.GPIO_Label=LED_PIN
|
||||||
PC13-TAMPER-RTC.Locked=true
|
PC13-TAMPER-RTC.Locked=true
|
||||||
@ -70,6 +97,7 @@ PCC.Seq0=0
|
|||||||
PCC.Series=STM32F1
|
PCC.Series=STM32F1
|
||||||
PCC.Temperature=25
|
PCC.Temperature=25
|
||||||
PCC.Vdd=3.3
|
PCC.Vdd=3.3
|
||||||
|
PD12.Signal=S_TIM4_CH1
|
||||||
PE11.Signal=S_TIM1_CH2
|
PE11.Signal=S_TIM1_CH2
|
||||||
PE13.Signal=S_TIM1_CH3
|
PE13.Signal=S_TIM1_CH3
|
||||||
PE4.GPIOParameters=GPIO_Label
|
PE4.GPIOParameters=GPIO_Label
|
||||||
@ -107,7 +135,7 @@ ProjectManager.StackSize=0x400
|
|||||||
ProjectManager.TargetToolchain=SW4STM32
|
ProjectManager.TargetToolchain=SW4STM32
|
||||||
ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/inverter2/cubemx/output/inverter2
|
ProjectManager.ToolChainLocation=/home/wn/workspace-stm32/inverter2/cubemx/output/inverter2
|
||||||
ProjectManager.UnderRoot=true
|
ProjectManager.UnderRoot=true
|
||||||
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_RTC_Init-RTC-false,3-MX_TIM1_Init-TIM1-false,4-MX_TIM2_Init-TIM2-false
|
ProjectManager.functionlistsort=1-MX_GPIO_Init-GPIO-false,2-MX_DMA_Init-DMA-false,3-MX_RTC_Init-RTC-false,4-MX_TIM1_Init-TIM1-false,5-MX_TIM2_Init-TIM2-false,6-MX_TIM3_Init-TIM3-false,7-MX_TIM4_Init-TIM4-false
|
||||||
RCC.ADCFreqValue=36000000
|
RCC.ADCFreqValue=36000000
|
||||||
RCC.AHBFreq_Value=72000000
|
RCC.AHBFreq_Value=72000000
|
||||||
RCC.APB1CLKDivider=RCC_HCLK_DIV2
|
RCC.APB1CLKDivider=RCC_HCLK_DIV2
|
||||||
@ -143,18 +171,18 @@ SH.S_TIM1_CH2.0=TIM1_CH2,Output Compare2 CH2
|
|||||||
SH.S_TIM1_CH2.ConfNb=1
|
SH.S_TIM1_CH2.ConfNb=1
|
||||||
SH.S_TIM1_CH3.0=TIM1_CH3,Output Compare3 CH3
|
SH.S_TIM1_CH3.0=TIM1_CH3,Output Compare3 CH3
|
||||||
SH.S_TIM1_CH3.ConfNb=1
|
SH.S_TIM1_CH3.ConfNb=1
|
||||||
SH.S_TIM2_CH1_ETR.0=TIM2_CH1,Output Compare1 CH1
|
SH.S_TIM2_CH1_ETR.0=TIM2_CH1,PWM Generation1 CH1
|
||||||
SH.S_TIM2_CH1_ETR.ConfNb=1
|
SH.S_TIM2_CH1_ETR.ConfNb=1
|
||||||
SH.S_TIM2_CH2.0=TIM2_CH2,Forced Output2 CH2
|
SH.S_TIM3_CH1.0=TIM3_CH1,PWM Generation1 CH1
|
||||||
SH.S_TIM2_CH2.ConfNb=1
|
SH.S_TIM3_CH1.ConfNb=1
|
||||||
SH.S_TIM2_CH3.0=TIM2_CH3,Forced Output3 CH3
|
SH.S_TIM4_CH1.0=TIM4_CH1,PWM Generation1 CH1
|
||||||
SH.S_TIM2_CH3.ConfNb=1
|
SH.S_TIM4_CH1.ConfNb=1
|
||||||
TIM1.Channel-Output\ Compare2\ CH2=TIM_CHANNEL_2
|
TIM1.Channel-Output\ Compare2\ CH2=TIM_CHANNEL_2
|
||||||
TIM1.Channel-Output\ Compare3\ CH3=TIM_CHANNEL_3
|
TIM1.Channel-Output\ Compare3\ CH3=TIM_CHANNEL_3
|
||||||
TIM1.IPParameters=TIM_MasterOutputTrigger,TIM_MasterSlaveMode,Channel-Output Compare2 CH2,Channel-Output Compare3 CH3,Prescaler,Period,OCMode_1,Pulse-Output Compare1 CH1,OCMode_2,Pulse-Output Compare2 CH2,OCMode_3,Pulse-Output Compare3 CH3
|
TIM1.IPParameters=TIM_MasterOutputTrigger,TIM_MasterSlaveMode,Channel-Output Compare2 CH2,Channel-Output Compare3 CH3,Prescaler,Period,OCMode_1,Pulse-Output Compare1 CH1,OCMode_2,Pulse-Output Compare2 CH2,OCMode_3,Pulse-Output Compare3 CH3
|
||||||
TIM1.OCMode_1=TIM_OCMODE_TIMING
|
TIM1.OCMode_1=TIM_OCMODE_TOGGLE
|
||||||
TIM1.OCMode_2=TIM_OCMODE_TIMING
|
TIM1.OCMode_2=TIM_OCMODE_TOGGLE
|
||||||
TIM1.OCMode_3=TIM_OCMODE_TIMING
|
TIM1.OCMode_3=TIM_OCMODE_TOGGLE
|
||||||
TIM1.Period=10000
|
TIM1.Period=10000
|
||||||
TIM1.Prescaler=36
|
TIM1.Prescaler=36
|
||||||
TIM1.Pulse-Output\ Compare1\ CH1=1000
|
TIM1.Pulse-Output\ Compare1\ CH1=1000
|
||||||
@ -162,12 +190,18 @@ TIM1.Pulse-Output\ Compare2\ CH2=2000
|
|||||||
TIM1.Pulse-Output\ Compare3\ CH3=3000
|
TIM1.Pulse-Output\ Compare3\ CH3=3000
|
||||||
TIM1.TIM_MasterOutputTrigger=TIM_TRGO_RESET
|
TIM1.TIM_MasterOutputTrigger=TIM_TRGO_RESET
|
||||||
TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
|
TIM1.TIM_MasterSlaveMode=TIM_MASTERSLAVEMODE_DISABLE
|
||||||
TIM2.Channel-Forced\ Output2\ CH2=TIM_CHANNEL_2
|
TIM2.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1
|
||||||
TIM2.Channel-Forced\ Output3\ CH3=TIM_CHANNEL_3
|
TIM2.Period=5000
|
||||||
TIM2.IPParameters=Channel-Forced Output2 CH2,Prescaler,Period,Channel-Forced Output3 CH3,OCMode_forced-Forced Output3 CH3
|
|
||||||
TIM2.OCMode_forced-Forced\ Output3\ CH3=TIM_OCMODE_FORCED_INACTIVE
|
|
||||||
TIM2.Period=1000
|
|
||||||
TIM2.Prescaler=72
|
TIM2.Prescaler=72
|
||||||
|
TIM2.Pulse-PWM\ Generation1\ CH1=1000
|
||||||
|
TIM3.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1
|
||||||
|
TIM3.Period=5000
|
||||||
|
TIM3.Prescaler=72
|
||||||
|
TIM3.Pulse-PWM\ Generation1\ CH1=2000
|
||||||
|
TIM4.IPParameters=Prescaler,Period,Pulse-PWM Generation1 CH1
|
||||||
|
TIM4.Period=5000
|
||||||
|
TIM4.Prescaler=72
|
||||||
|
TIM4.Pulse-PWM\ Generation1\ CH1=3000
|
||||||
VP_RTC_No_RTC_Output.Mode=RTC_OUT_NO
|
VP_RTC_No_RTC_Output.Mode=RTC_OUT_NO
|
||||||
VP_RTC_No_RTC_Output.Signal=RTC_No_RTC_Output
|
VP_RTC_No_RTC_Output.Signal=RTC_No_RTC_Output
|
||||||
VP_SYS_VS_Systick.Mode=SysTick
|
VP_SYS_VS_Systick.Mode=SysTick
|
||||||
@ -176,4 +210,8 @@ VP_TIM1_VS_ClockSourceINT.Mode=Internal
|
|||||||
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
VP_TIM1_VS_ClockSourceINT.Signal=TIM1_VS_ClockSourceINT
|
||||||
VP_TIM2_VS_ClockSourceINT.Mode=Internal
|
VP_TIM2_VS_ClockSourceINT.Mode=Internal
|
||||||
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
|
VP_TIM2_VS_ClockSourceINT.Signal=TIM2_VS_ClockSourceINT
|
||||||
|
VP_TIM3_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM3_VS_ClockSourceINT.Signal=TIM3_VS_ClockSourceINT
|
||||||
|
VP_TIM4_VS_ClockSourceINT.Mode=Internal
|
||||||
|
VP_TIM4_VS_ClockSourceINT.Signal=TIM4_VS_ClockSourceINT
|
||||||
board=inverter2
|
board=inverter2
|
||||||
|
@ -49,6 +49,10 @@
|
|||||||
#define LED4_PIN_GPIO_Port GPIOE
|
#define LED4_PIN_GPIO_Port GPIOE
|
||||||
#define LED_PIN_Pin GPIO_PIN_13
|
#define LED_PIN_Pin GPIO_PIN_13
|
||||||
#define LED_PIN_GPIO_Port GPIOC
|
#define LED_PIN_GPIO_Port GPIOC
|
||||||
|
#define BridgePolarity_Pin GPIO_PIN_0
|
||||||
|
#define BridgePolarity_GPIO_Port GPIOC
|
||||||
|
#define ERROR_PIN_Pin GPIO_PIN_10
|
||||||
|
#define ERROR_PIN_GPIO_Port GPIOB
|
||||||
/* USER CODE BEGIN Private defines */
|
/* USER CODE BEGIN Private defines */
|
||||||
|
|
||||||
/* USER CODE END Private defines */
|
/* USER CODE END Private defines */
|
||||||
|
@ -56,7 +56,7 @@
|
|||||||
/*#define HAL_CORTEX_MODULE_ENABLED */
|
/*#define HAL_CORTEX_MODULE_ENABLED */
|
||||||
/*#define HAL_CRC_MODULE_ENABLED */
|
/*#define HAL_CRC_MODULE_ENABLED */
|
||||||
/*#define HAL_DAC_MODULE_ENABLED */
|
/*#define HAL_DAC_MODULE_ENABLED */
|
||||||
/*#define HAL_DMA_MODULE_ENABLED */
|
#define HAL_DMA_MODULE_ENABLED
|
||||||
/*#define HAL_ETH_MODULE_ENABLED */
|
/*#define HAL_ETH_MODULE_ENABLED */
|
||||||
/*#define HAL_FLASH_MODULE_ENABLED */
|
/*#define HAL_FLASH_MODULE_ENABLED */
|
||||||
#define HAL_GPIO_MODULE_ENABLED
|
#define HAL_GPIO_MODULE_ENABLED
|
||||||
|
@ -54,7 +54,9 @@ void SVC_Handler(void);
|
|||||||
void DebugMon_Handler(void);
|
void DebugMon_Handler(void);
|
||||||
void PendSV_Handler(void);
|
void PendSV_Handler(void);
|
||||||
void SysTick_Handler(void);
|
void SysTick_Handler(void);
|
||||||
|
void DMA1_Channel5_IRQHandler(void);
|
||||||
void TIM1_CC_IRQHandler(void);
|
void TIM1_CC_IRQHandler(void);
|
||||||
|
void TIM2_IRQHandler(void);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
@ -15,35 +15,74 @@
|
|||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
#include <PontCoopScheduler.h>
|
#include <PontCoopScheduler.h>
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
|
||||||
extern TIM_HandleTypeDef htim1;
|
extern TIM_HandleTypeDef htim1;
|
||||||
extern TIM_HandleTypeDef htim2;
|
extern TIM_HandleTypeDef htim2;
|
||||||
|
extern TIM_HandleTypeDef htim3;
|
||||||
|
extern TIM_HandleTypeDef htim4;
|
||||||
|
|
||||||
|
|
||||||
|
#define NUM_OF_SINE_SLOT 30
|
||||||
|
uint16_t freqOut = 100;
|
||||||
|
const uint32_t FREQ_IN = 72E6;
|
||||||
|
const float PI = 3.14159;
|
||||||
|
float slotAngle = 180.0 / NUM_OF_SINE_SLOT;
|
||||||
|
float sineValues[NUM_OF_SINE_SLOT];
|
||||||
|
uint16_t IV[NUM_OF_SINE_SLOT];
|
||||||
|
volatile uint8_t slotCnt;
|
||||||
|
|
||||||
void blink(void *handle) {
|
void blink(void *handle) {
|
||||||
HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
|
HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void my_setup_1() {
|
void my_setup_1() {
|
||||||
|
for (uint8_t i = 0; i < NUM_OF_SINE_SLOT; i++) {
|
||||||
|
float angle = i * slotAngle;
|
||||||
|
sineValues[i] = sinf(angle / 180 * PI);
|
||||||
|
}
|
||||||
|
|
||||||
schInit();
|
schInit();
|
||||||
schAdd(blink, NULL, 0, 100);
|
schAdd(blink, NULL, 0, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void my_setup_2() {
|
void my_setup_2() {
|
||||||
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1);
|
uint16_t myArr = (FREQ_IN / (freqOut * NUM_OF_SINE_SLOT * 4));
|
||||||
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_2);
|
|
||||||
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_3);
|
|
||||||
|
|
||||||
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_1);
|
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_1);
|
||||||
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_2);
|
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_2);
|
||||||
HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_3);
|
HAL_TIM_OC_Start_IT(&htim1, TIM_CHANNEL_3);
|
||||||
|
|
||||||
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);
|
HAL_NVIC_SetPriority(TIM1_CC_IRQn, 0, 0);
|
||||||
HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);
|
HAL_NVIC_EnableIRQ(TIM1_CC_IRQn);
|
||||||
|
|
||||||
|
__HAL_TIM_SET_AUTORELOAD(&htim3, myArr);
|
||||||
|
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1);
|
||||||
|
HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t slotWidth = __HAL_TIM_GET_AUTORELOAD(&htim2);
|
||||||
|
for (uint8_t i = 0; i < NUM_OF_SINE_SLOT; i++) {
|
||||||
|
IV[i] = (uint16_t)(sineValues[i] * 0.9 * slotWidth);
|
||||||
|
}
|
||||||
|
slotCnt = 0;
|
||||||
|
__HAL_TIM_SET_AUTORELOAD(&htim2, myArr);
|
||||||
|
HAL_GPIO_WritePin(BridgePolarity_GPIO_Port, BridgePolarity_Pin, GPIO_PIN_RESET);
|
||||||
|
HAL_TIM_PWM_Start_DMA(&htim2, TIM_CHANNEL_1, (uint32_t*)IV, NUM_OF_SINE_SLOT);
|
||||||
|
|
||||||
|
__HAL_TIM_ENABLE_IT(&htim2, TIM_IT_UPDATE);
|
||||||
|
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void my_errorHandler() {
|
||||||
|
HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_SET);
|
||||||
}
|
}
|
||||||
|
|
||||||
void my_loop() {
|
void my_loop() {
|
||||||
@ -52,10 +91,19 @@ void my_loop() {
|
|||||||
|
|
||||||
|
|
||||||
void HAL_SYSTICK_Callback() {
|
void HAL_SYSTICK_Callback() {
|
||||||
//HAL_GPIO_TogglePin(LED_PIN_GPIO_Port, LED_PIN_Pin);
|
|
||||||
schUpdate();
|
schUpdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
|
||||||
|
if (htim->Instance == TIM2) {
|
||||||
|
slotCnt++;
|
||||||
|
if (slotCnt == NUM_OF_SINE_SLOT + 2) {
|
||||||
|
slotCnt = 2;
|
||||||
|
HAL_GPIO_TogglePin(BridgePolarity_GPIO_Port, BridgePolarity_Pin);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim) {
|
void HAL_TIM_OC_DelayElapsedCallback(TIM_HandleTypeDef * htim) {
|
||||||
if (htim->Instance == TIM1) {
|
if (htim->Instance == TIM1) {
|
||||||
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
|
if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1) {
|
||||||
|
@ -12,6 +12,7 @@
|
|||||||
void my_setup_1();
|
void my_setup_1();
|
||||||
void my_setup_2();
|
void my_setup_2();
|
||||||
void my_loop();
|
void my_loop();
|
||||||
|
void my_errorHandler();
|
||||||
|
|
||||||
|
|
||||||
#endif /* MAIN2_H_ */
|
#endif /* MAIN2_H_ */
|
||||||
|
168
src/main.c
168
src/main.c
@ -43,6 +43,9 @@ RTC_HandleTypeDef hrtc;
|
|||||||
|
|
||||||
TIM_HandleTypeDef htim1;
|
TIM_HandleTypeDef htim1;
|
||||||
TIM_HandleTypeDef htim2;
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -53,9 +56,12 @@ TIM_HandleTypeDef htim2;
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_DMA_Init(void);
|
||||||
static void MX_RTC_Init(void);
|
static void MX_RTC_Init(void);
|
||||||
static void MX_TIM1_Init(void);
|
static void MX_TIM1_Init(void);
|
||||||
static void MX_TIM2_Init(void);
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
|
||||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
@ -87,9 +93,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_DMA_Init();
|
||||||
MX_RTC_Init();
|
MX_RTC_Init();
|
||||||
MX_TIM1_Init();
|
MX_TIM1_Init();
|
||||||
MX_TIM2_Init();
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
my_setup_2();
|
my_setup_2();
|
||||||
@ -245,7 +254,7 @@ static void MX_TIM1_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
|
||||||
sConfigOC.Pulse = 1000;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
@ -282,9 +291,9 @@ static void MX_TIM2_Init(void)
|
|||||||
TIM_OC_InitTypeDef sConfigOC;
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
htim2.Instance = TIM2;
|
htim2.Instance = TIM2;
|
||||||
htim2.Init.Prescaler = 72;
|
htim2.Init.Prescaler = 1;
|
||||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim2.Init.Period = 1000;
|
htim2.Init.Period = 5000;
|
||||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
@ -297,7 +306,7 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -309,23 +318,11 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
sConfigOC.Pulse = 0;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -334,6 +331,119 @@ static void MX_TIM2_Init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 1;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 5000;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 2000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 72;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 5000;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 3000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim4);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable DMA controller clock
|
||||||
|
*/
|
||||||
|
static void MX_DMA_Init(void)
|
||||||
|
{
|
||||||
|
/* DMA controller clock enable */
|
||||||
|
__HAL_RCC_DMA1_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* DMA interrupt init */
|
||||||
|
/* DMA1_Channel5_IRQn interrupt configuration */
|
||||||
|
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -350,12 +460,17 @@ static void MX_GPIO_Init(void)
|
|||||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
||||||
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
||||||
@ -363,11 +478,17 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_PIN_Pin */
|
/*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_PIN_Pin;
|
GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_PIN_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pin : ERROR_PIN_Pin */
|
||||||
|
GPIO_InitStruct.Pin = ERROR_PIN_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,6 +504,7 @@ static void MX_GPIO_Init(void)
|
|||||||
void Error_Handler(void)
|
void Error_Handler(void)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN Error_Handler */
|
/* USER CODE BEGIN Error_Handler */
|
||||||
|
my_errorHandler();
|
||||||
/* User can add his own implementation to report the HAL error return state */
|
/* User can add his own implementation to report the HAL error return state */
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
165
src/main.c-bak
165
src/main.c-bak
@ -42,6 +42,9 @@ RTC_HandleTypeDef hrtc;
|
|||||||
|
|
||||||
TIM_HandleTypeDef htim1;
|
TIM_HandleTypeDef htim1;
|
||||||
TIM_HandleTypeDef htim2;
|
TIM_HandleTypeDef htim2;
|
||||||
|
TIM_HandleTypeDef htim3;
|
||||||
|
TIM_HandleTypeDef htim4;
|
||||||
|
DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
|
|
||||||
/* USER CODE BEGIN PV */
|
/* USER CODE BEGIN PV */
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
@ -52,9 +55,12 @@ TIM_HandleTypeDef htim2;
|
|||||||
void SystemClock_Config(void);
|
void SystemClock_Config(void);
|
||||||
void Error_Handler(void);
|
void Error_Handler(void);
|
||||||
static void MX_GPIO_Init(void);
|
static void MX_GPIO_Init(void);
|
||||||
|
static void MX_DMA_Init(void);
|
||||||
static void MX_RTC_Init(void);
|
static void MX_RTC_Init(void);
|
||||||
static void MX_TIM1_Init(void);
|
static void MX_TIM1_Init(void);
|
||||||
static void MX_TIM2_Init(void);
|
static void MX_TIM2_Init(void);
|
||||||
|
static void MX_TIM3_Init(void);
|
||||||
|
static void MX_TIM4_Init(void);
|
||||||
|
|
||||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
@ -85,9 +91,12 @@ int main(void)
|
|||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
|
MX_DMA_Init();
|
||||||
MX_RTC_Init();
|
MX_RTC_Init();
|
||||||
MX_TIM1_Init();
|
MX_TIM1_Init();
|
||||||
MX_TIM2_Init();
|
MX_TIM2_Init();
|
||||||
|
MX_TIM3_Init();
|
||||||
|
MX_TIM4_Init();
|
||||||
|
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
@ -241,7 +250,7 @@ static void MX_TIM1_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
|
||||||
sConfigOC.Pulse = 1000;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;
|
||||||
@ -280,7 +289,7 @@ static void MX_TIM2_Init(void)
|
|||||||
htim2.Instance = TIM2;
|
htim2.Instance = TIM2;
|
||||||
htim2.Init.Prescaler = 72;
|
htim2.Init.Prescaler = 72;
|
||||||
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
htim2.Init.Period = 1000;
|
htim2.Init.Period = 5000;
|
||||||
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_Base_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
@ -293,7 +302,7 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
|
if (HAL_TIM_PWM_Init(&htim2) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -305,23 +314,11 @@ static void MX_TIM2_Init(void)
|
|||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_TIMING;
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
sConfigOC.Pulse = 0;
|
sConfigOC.Pulse = 1000;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
if (HAL_TIM_PWM_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_ACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_2) != HAL_OK)
|
|
||||||
{
|
|
||||||
Error_Handler();
|
|
||||||
}
|
|
||||||
|
|
||||||
sConfigOC.OCMode = TIM_OCMODE_FORCED_INACTIVE;
|
|
||||||
if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_3) != HAL_OK)
|
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
@ -330,6 +327,119 @@ static void MX_TIM2_Init(void)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* TIM3 init function */
|
||||||
|
static void MX_TIM3_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim3.Instance = TIM3;
|
||||||
|
htim3.Init.Prescaler = 72;
|
||||||
|
htim3.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim3.Init.Period = 5000;
|
||||||
|
htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim3, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim3) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 2000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim3);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/* TIM4 init function */
|
||||||
|
static void MX_TIM4_Init(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
TIM_ClockConfigTypeDef sClockSourceConfig;
|
||||||
|
TIM_MasterConfigTypeDef sMasterConfig;
|
||||||
|
TIM_OC_InitTypeDef sConfigOC;
|
||||||
|
|
||||||
|
htim4.Instance = TIM4;
|
||||||
|
htim4.Init.Prescaler = 72;
|
||||||
|
htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
|
||||||
|
htim4.Init.Period = 5000;
|
||||||
|
htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
|
||||||
|
if (HAL_TIM_Base_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
|
||||||
|
if (HAL_TIM_ConfigClockSource(&htim4, &sClockSourceConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (HAL_TIM_PWM_Init(&htim4) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
|
||||||
|
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
|
||||||
|
if (HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
sConfigOC.OCMode = TIM_OCMODE_PWM1;
|
||||||
|
sConfigOC.Pulse = 3000;
|
||||||
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
|
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
||||||
|
if (HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
HAL_TIM_MspPostInit(&htim4);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable DMA controller clock
|
||||||
|
*/
|
||||||
|
static void MX_DMA_Init(void)
|
||||||
|
{
|
||||||
|
/* DMA controller clock enable */
|
||||||
|
__HAL_RCC_DMA1_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* DMA interrupt init */
|
||||||
|
/* DMA1_Channel5_IRQn interrupt configuration */
|
||||||
|
HAL_NVIC_SetPriority(DMA1_Channel5_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(DMA1_Channel5_IRQn);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Configure pins as
|
/** Configure pins as
|
||||||
* Analog
|
* Analog
|
||||||
* Input
|
* Input
|
||||||
@ -346,12 +456,17 @@ static void MX_GPIO_Init(void)
|
|||||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||||
|
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOE, LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pin Output Level */
|
/*Configure GPIO pin Output Level */
|
||||||
HAL_GPIO_WritePin(LED_PIN_GPIO_Port, LED_PIN_Pin, GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(GPIOC, LED_PIN_Pin|BridgePolarity_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
|
/*Configure GPIO pin Output Level */
|
||||||
|
HAL_GPIO_WritePin(ERROR_PIN_GPIO_Port, ERROR_PIN_Pin, GPIO_PIN_RESET);
|
||||||
|
|
||||||
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
/*Configure GPIO pins : LED2_PIN_Pin LED3_PIN_Pin LED4_PIN_Pin */
|
||||||
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
GPIO_InitStruct.Pin = LED2_PIN_Pin|LED3_PIN_Pin|LED4_PIN_Pin;
|
||||||
@ -359,11 +474,17 @@ static void MX_GPIO_Init(void)
|
|||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pin : LED_PIN_Pin */
|
/*Configure GPIO pins : LED_PIN_Pin BridgePolarity_Pin */
|
||||||
GPIO_InitStruct.Pin = LED_PIN_Pin;
|
GPIO_InitStruct.Pin = LED_PIN_Pin|BridgePolarity_Pin;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_PIN_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pin : ERROR_PIN_Pin */
|
||||||
|
GPIO_InitStruct.Pin = ERROR_PIN_Pin;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(ERROR_PIN_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +34,8 @@
|
|||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f1xx_hal.h"
|
#include "stm32f1xx_hal.h"
|
||||||
|
|
||||||
|
extern DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
|
|
||||||
extern void Error_Handler(void);
|
extern void Error_Handler(void);
|
||||||
/* USER CODE BEGIN 0 */
|
/* USER CODE BEGIN 0 */
|
||||||
|
|
||||||
@ -138,10 +140,53 @@ void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
|
|||||||
/* USER CODE END TIM2_MspInit 0 */
|
/* USER CODE END TIM2_MspInit 0 */
|
||||||
/* Peripheral clock enable */
|
/* Peripheral clock enable */
|
||||||
__HAL_RCC_TIM2_CLK_ENABLE();
|
__HAL_RCC_TIM2_CLK_ENABLE();
|
||||||
|
|
||||||
|
/* Peripheral DMA init*/
|
||||||
|
|
||||||
|
hdma_tim2_ch1.Instance = DMA1_Channel5;
|
||||||
|
hdma_tim2_ch1.Init.Direction = DMA_MEMORY_TO_PERIPH;
|
||||||
|
hdma_tim2_ch1.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||||
|
hdma_tim2_ch1.Init.MemInc = DMA_MINC_ENABLE;
|
||||||
|
hdma_tim2_ch1.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
|
||||||
|
hdma_tim2_ch1.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
|
||||||
|
hdma_tim2_ch1.Init.Mode = DMA_CIRCULAR;
|
||||||
|
hdma_tim2_ch1.Init.Priority = DMA_PRIORITY_LOW;
|
||||||
|
if (HAL_DMA_Init(&hdma_tim2_ch1) != HAL_OK)
|
||||||
|
{
|
||||||
|
Error_Handler();
|
||||||
|
}
|
||||||
|
|
||||||
|
__HAL_LINKDMA(htim_base,hdma[TIM_DMA_ID_CC1],hdma_tim2_ch1);
|
||||||
|
|
||||||
|
/* Peripheral interrupt init */
|
||||||
|
HAL_NVIC_SetPriority(TIM2_IRQn, 0, 0);
|
||||||
|
HAL_NVIC_EnableIRQ(TIM2_IRQn);
|
||||||
/* USER CODE BEGIN TIM2_MspInit 1 */
|
/* USER CODE BEGIN TIM2_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspInit 1 */
|
/* USER CODE END TIM2_MspInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM3_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM3_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 0 */
|
||||||
|
/* Peripheral clock enable */
|
||||||
|
__HAL_RCC_TIM4_CLK_ENABLE();
|
||||||
|
/* USER CODE BEGIN TIM4_MspInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -177,11 +222,9 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
|||||||
/* USER CODE END TIM2_MspPostInit 0 */
|
/* USER CODE END TIM2_MspPostInit 0 */
|
||||||
|
|
||||||
/**TIM2 GPIO Configuration
|
/**TIM2 GPIO Configuration
|
||||||
PA0-WKUP ------> TIM2_CH1
|
PA0-WKUP ------> TIM2_CH1
|
||||||
PA1 ------> TIM2_CH2
|
|
||||||
PA2 ------> TIM2_CH3
|
|
||||||
*/
|
*/
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2;
|
GPIO_InitStruct.Pin = GPIO_PIN_0;
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
@ -190,6 +233,44 @@ void HAL_TIM_MspPostInit(TIM_HandleTypeDef* htim)
|
|||||||
|
|
||||||
/* USER CODE END TIM2_MspPostInit 1 */
|
/* USER CODE END TIM2_MspPostInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM3 GPIO Configuration
|
||||||
|
PA6 ------> TIM3_CH1
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_6;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM3_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspPostInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspPostInit 0 */
|
||||||
|
|
||||||
|
/**TIM4 GPIO Configuration
|
||||||
|
PD12 ------> TIM4_CH1
|
||||||
|
*/
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_12;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||||
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
|
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
__HAL_AFIO_REMAP_TIM4_ENABLE();
|
||||||
|
|
||||||
|
/* USER CODE BEGIN TIM4_MspPostInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspPostInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,10 +299,39 @@ void HAL_TIM_Base_MspDeInit(TIM_HandleTypeDef* htim_base)
|
|||||||
/* USER CODE END TIM2_MspDeInit 0 */
|
/* USER CODE END TIM2_MspDeInit 0 */
|
||||||
/* Peripheral clock disable */
|
/* Peripheral clock disable */
|
||||||
__HAL_RCC_TIM2_CLK_DISABLE();
|
__HAL_RCC_TIM2_CLK_DISABLE();
|
||||||
|
|
||||||
|
/* Peripheral DMA DeInit*/
|
||||||
|
HAL_DMA_DeInit(htim_base->hdma[TIM_DMA_ID_CC1]);
|
||||||
|
|
||||||
|
/* Peripheral interrupt DeInit*/
|
||||||
|
HAL_NVIC_DisableIRQ(TIM2_IRQn);
|
||||||
|
|
||||||
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
/* USER CODE BEGIN TIM2_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END TIM2_MspDeInit 1 */
|
/* USER CODE END TIM2_MspDeInit 1 */
|
||||||
}
|
}
|
||||||
|
else if(htim_base->Instance==TIM3)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM3_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM3_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM3_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
else if(htim_base->Instance==TIM4)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 0 */
|
||||||
|
/* Peripheral clock disable */
|
||||||
|
__HAL_RCC_TIM4_CLK_DISABLE();
|
||||||
|
/* USER CODE BEGIN TIM4_MspDeInit 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM4_MspDeInit 1 */
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,9 @@
|
|||||||
/* USER CODE END 0 */
|
/* USER CODE END 0 */
|
||||||
|
|
||||||
/* External variables --------------------------------------------------------*/
|
/* External variables --------------------------------------------------------*/
|
||||||
|
extern DMA_HandleTypeDef hdma_tim2_ch1;
|
||||||
extern TIM_HandleTypeDef htim1;
|
extern TIM_HandleTypeDef htim1;
|
||||||
|
extern TIM_HandleTypeDef htim2;
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
/* Cortex-M3 Processor Interruption and Exception Handlers */
|
||||||
@ -184,6 +186,20 @@ void SysTick_Handler(void)
|
|||||||
/* please refer to the startup file (startup_stm32f1xx.s). */
|
/* please refer to the startup file (startup_stm32f1xx.s). */
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles DMA1 channel5 global interrupt.
|
||||||
|
*/
|
||||||
|
void DMA1_Channel5_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN DMA1_Channel5_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END DMA1_Channel5_IRQn 0 */
|
||||||
|
HAL_DMA_IRQHandler(&hdma_tim2_ch1);
|
||||||
|
/* USER CODE BEGIN DMA1_Channel5_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END DMA1_Channel5_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function handles TIM1 capture compare interrupt.
|
* @brief This function handles TIM1 capture compare interrupt.
|
||||||
*/
|
*/
|
||||||
@ -198,6 +214,20 @@ void TIM1_CC_IRQHandler(void)
|
|||||||
/* USER CODE END TIM1_CC_IRQn 1 */
|
/* USER CODE END TIM1_CC_IRQn 1 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This function handles TIM2 global interrupt.
|
||||||
|
*/
|
||||||
|
void TIM2_IRQHandler(void)
|
||||||
|
{
|
||||||
|
/* USER CODE BEGIN TIM2_IRQn 0 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_IRQn 0 */
|
||||||
|
HAL_TIM_IRQHandler(&htim2);
|
||||||
|
/* USER CODE BEGIN TIM2_IRQn 1 */
|
||||||
|
|
||||||
|
/* USER CODE END TIM2_IRQn 1 */
|
||||||
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -6,6 +6,7 @@ while (<>) {
|
|||||||
print " my_setup_1();\n" if m/USER CODE BEGIN 1/;
|
print " my_setup_1();\n" if m/USER CODE BEGIN 1/;
|
||||||
print " my_setup_2();\n" if m/USER CODE BEGIN 2/;
|
print " my_setup_2();\n" if m/USER CODE BEGIN 2/;
|
||||||
print " my_loop();\n" if m/USER CODE BEGIN 3/;
|
print " my_loop();\n" if m/USER CODE BEGIN 3/;
|
||||||
|
print " my_errorHandler();\n" if m/USER CODE BEGIN Error_Handler/;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user