Пт июл 07, 2017 23:41:52
#include "stm32f3xx.h"
void SetRCC()
{
RCC_OscInitTypeDef osc_def;
RCC_ClkInitTypeDef clk_def;
RCC_PeriphCLKInitTypeDef per_def;
HAL_RCC_EnableCSS();
osc_def.OscillatorType = RCC_OSCILLATORTYPE_HSE;
osc_def.HSEState = RCC_HSE_ON;
osc_def.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
osc_def.LSEState = RCC_LSE_OFF;
osc_def.HSIState = RCC_HSI_OFF;
osc_def.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
osc_def.LSIState = RCC_LSI_OFF;
osc_def.PLL.PLLState = RCC_PLL_ON;
osc_def.PLL.PLLSource = RCC_PLLSOURCE_HSE;
osc_def.PLL.PLLMUL = RCC_PLL_MUL9;
HAL_RCC_OscConfig(&osc_def);
clk_def.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
| RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
clk_def.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
clk_def.AHBCLKDivider = RCC_SYSCLK_DIV1;
clk_def.APB1CLKDivider = RCC_HCLK_DIV2;
clk_def.APB2CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&clk_def, FLASH_LATENCY_2);
per_def.RTCClockSelection = RCC_PERIPHCLK_TIM1;
per_def.Tim1ClockSelection = RCC_TIM1CLK_HCLK;
HAL_RCCEx_PeriphCLKConfig(&per_def);
}
void SetGPIOs()
{
GPIO_InitTypeDef pin_out;
__HAL_RCC_GPIOE_CLK_ENABLE();
pin_out.Pin = GPIO_PIN_9 | GPIO_PIN_11;
pin_out.Mode = GPIO_MODE_AF_PP;
pin_out.Pull = GPIO_PULLDOWN;
pin_out.Speed = GPIO_SPEED_FREQ_HIGH;
pin_out.Alternate = GPIO_AF2_TIM1;
HAL_GPIO_Init(GPIOE, &pin_out);
}
void InitTim1()
{
TIM_HandleTypeDef htim1;
TIM_OC_InitTypeDef pwm;
__HAL_RCC_TIM1_CLK_ENABLE();
HAL_TIM_PWM_MspInit(&htim1);
htim1.Instance = TIM1;
htim1.Init.Prescaler = 1200 - 1;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 1200 - 1;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
HAL_TIM_PWM_Init(&htim1);
pwm.OCMode = TIM_OCMODE_PWM2;
pwm.Pulse = 0;
pwm.OCPolarity = TIM_OCPOLARITY_HIGH;
pwm.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim1, &pwm, TIM_CHANNEL_1);
pwm.OCMode = TIM_OCMODE_PWM2;
pwm.Pulse = 0;
pwm.OCPolarity = TIM_OCPOLARITY_HIGH;
pwm.OCFastMode = TIM_OCFAST_DISABLE;
HAL_TIM_PWM_ConfigChannel(&htim1, &pwm, TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
TIM1->CCR1 = 600;
TIM1->CCR2 = 600;
}
int main(void)
{
SetRCC();
SetGPIOs();
InitTim1();
while(1)
{
}
}
Сб июл 08, 2017 06:56:57
Сб июл 08, 2017 09:15:12
Сб июл 08, 2017 10:16:05
Вс июл 30, 2017 18:35:49