Вт май 16, 2023 11:05:43
Ср май 17, 2023 08:51:29
Ср май 17, 2023 13:05:45
Ср май 17, 2023 13:07:02
void DMA1_Channel2_IRQHandler(void) __attribute__((interrupt("WCH-Interrupt-fast")));
void DMA1_Channel2_IRQHandler(void)
{
if(DMA_GetITStatus(DMA1_IT_TC2) != RESET) {
DMA_ClearITPendingBit(DMA1_IT_TC2);
}
if (TIM_GetITStatus(TIM1, TIM_IT_CC1) != RESET) {
TIM_ClearITPendingBit(TIM1, TIM_IT_CC1);
}
// Вставить настройку таймера для нового запроса
// time_base_init.TIM_Period = 126;
TIM1->CNT = 0;
DMA_Cmd(DMA1_Channel2, DISABLE);
TIM_DMACmd(TIM1, TIM_DMA_CC1, DISABLE);
TIM_Cmd(TIM1, DISABLE);
TIM_ITConfig(TIM1, TIM_IT_CC1, DISABLE);
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Disable);
x++;
}
void ws2812_show() {
TIM_DMACmd(TIM1, TIM_DMA_CC1, ENABLE);
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
TIM_Cmd(TIM1, ENABLE);
NVIC_EnableIRQ(DMA1_Channel2_IRQn);
DMA_Cmd(DMA1_Channel2, ENABLE);
}
Ср май 17, 2023 17:30:47
Ср май 17, 2023 17:42:38
Чт май 18, 2023 11:57:34
Чт май 18, 2023 12:20:56
Сб май 20, 2023 01:10:11
// Init Timer for PWM (PA8)
void Timer_PWM_Init() {
GPIO_InitTypeDef GPIO_PWMInitStructure={0};
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_TIM1, ENABLE );
GPIO_PWMInitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_PWMInitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_PWMInitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init( GPIOA, &GPIO_PWMInitStructure );
GPIO_PinRemapConfig(AFIO_PCFR1_TIM1_REMAP_FULLREMAP, ENABLE);
time_base_init.TIM_ClockDivision = TIM_CKD_DIV4;
time_base_init.TIM_Period = 99;
time_base_init.TIM_CounterMode = TIM_CounterMode_Up;
time_base_init.TIM_Prescaler = 0;
time_base_init.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM1, &time_base_init);
timer_output_cfg.TIM_OCMode = TIM_OCMode_PWM1;
timer_output_cfg.TIM_OutputState = TIM_OutputState_Enable;
timer_output_cfg.TIM_OCPolarity = TIM_OCPolarity_Low;
timer_output_cfg.TIM_OCIdleState = 0;
// timer_output_cfg.TIM_OCNIdleState = 0;
timer_output_cfg.TIM_Pulse = 10; // Если выставлять больше, уровень будет резко меняться, в конечном итоге выставится сплошной уровень по выходу ШИМ. HIGH 0x8F5C LOW 0x47AE
// TIM_DMAConfig(TIM1, TIM_DMABase_CCR1, TIM_DMABurstLength_1Transfer);
// TIM_DMACmd(TIM1, TIM_DMA_CC1, DISABLE);
TIM_OC1Init(TIM1, &timer_output_cfg);
TIM_CtrlPWMOutputs(TIM1, ENABLE );
TIM_OC1PreloadConfig( TIM1, TIM_OCPreload_Disable );
TIM_ARRPreloadConfig( TIM1, ENABLE );
TIM_CCxCmd(TIM1, TIM_Channel_1, TIM_CCx_Enable);
TIM_ITConfig(TIM1, TIM_IT_CC1, ENABLE);
NVIC_EnableIRQ(TIM1_CC_IRQn);
TIM_Cmd( TIM1, ENABLE );
}
Сб май 20, 2023 17:54:16
Ср май 31, 2023 20:59:37