Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* файл main.c */
- #include "stm32f4xx_hal.h"
- #include <stdint.h>
- #include <math.h>
- #include "BlinkLed.h"
- TIM_HandleTypeDef htim4;
- TIM_OC_InitTypeDef sConfigOC1;
- TIM_OC_InitTypeDef sConfigOC2;
- TIM_OC_InitTypeDef sConfigOC3;
- TIM_OC_InitTypeDef sConfigOC4;
- void SystemClock_Config(void);
- static void MX_GPIO_Init(int);
- static void MX_TIM4_Init(void);
- int main(void){
- volatile int i = 0;
- volatile int j = 0;
- SystemClock_Config();
- HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_0);
- HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
- MX_GPIO_Init(12);
- MX_GPIO_Init(13);
- MX_GPIO_Init(14);
- MX_GPIO_Init(15);
- MX_TIM4_Init();
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_1);
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_2);
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_3);
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4);
- int up = 0;
- while (1){
- up = 1;
- for(i = 0; i <= 65353 ; i++){
- TIM4->CCR1 = i;
- TIM4->CCR2 = 65353-i;
- if(up){
- TIM4->CCR3 = 65353-i/2;
- TIM4->CCR4 = i/2;
- }else{
- TIM4->CCR3 = i/2;
- TIM4->CCR4 = 65353-i/2;
- }
- for(j = 0 ; j < 100; j++) __NOP();
- }
- for(i = 65535; i >= 0 ; i--){
- TIM4->CCR1 = i;
- TIM4->CCR2 = 65353-i;
- if(up){
- TIM4->CCR3 = 65353-(65353-i)*2;
- TIM4->CCR4 = (65353-i)*2;
- }else{
- TIM4->CCR3 = (65353-i)*2;
- TIM4->CCR4 = 65353-(65353-i)*2;
- }
- for(j = 0 ; j < 100; j++) __NOP();
- }
- }
- }
- void MX_TIM4_Init(void){
- TIM_MasterConfigTypeDef sMasterConfig;
- htim4.Instance = TIM4;
- htim4.Init.Prescaler = 0;
- htim4.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim4.Init.Period = 65535;
- htim4.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim4.Init.RepetitionCounter = 0;
- HAL_TIM_PWM_Init(&htim4);
- sConfigOC1.OCMode = TIM_OCMODE_PWM1;
- sConfigOC1.Pulse = 0;
- sConfigOC1.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC1.OCFastMode = TIM_OCFAST_ENABLE;
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC1, TIM_CHANNEL_1);
- sConfigOC2.OCMode = TIM_OCMODE_PWM1;
- sConfigOC2.Pulse = 0;
- sConfigOC2.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC2.OCFastMode = TIM_OCFAST_ENABLE;
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC2, TIM_CHANNEL_2);
- sConfigOC3.OCMode = TIM_OCMODE_PWM1;
- sConfigOC3.Pulse = 0;
- sConfigOC3.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC3.OCFastMode = TIM_OCFAST_ENABLE;
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC3, TIM_CHANNEL_3);
- sConfigOC4.OCMode = TIM_OCMODE_PWM1;
- sConfigOC4.Pulse = 0;
- sConfigOC4.OCPolarity = TIM_OCPOLARITY_HIGH;
- sConfigOC4.OCFastMode = TIM_OCFAST_ENABLE;
- HAL_TIM_PWM_ConfigChannel(&htim4, &sConfigOC4, TIM_CHANNEL_4);
- sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
- sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_ENABLE;
- HAL_TIMEx_MasterConfigSynchronization(&htim4, &sMasterConfig);
- }
- void MX_GPIO_Init(int pin){
- __TIM4_CLK_ENABLE();
- RCC->AHB1ENR |= BLINK_RCC_MASKx(BLINK_PORT_NUMBER);
- GPIO_InitTypeDef GPIO_InitStructure;
- GPIO_InitStructure.Pin = BLINK_PIN_MASK(pin);
- GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
- GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
- GPIO_InitStructure.Pull = GPIO_NOPULL;
- GPIO_InitStructure.Alternate = GPIO_AF2_TIM4;
- HAL_GPIO_Init(BLINK_GPIOx(BLINK_PORT_NUMBER), &GPIO_InitStructure);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement