/* *TIM2,TIM5是32位定时器 *参考一下其他组怎么写的 */ void encoder_init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_ICInitTypeDef TIM_ICInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //TIM2_CH1->PA15, TIM2_CH2->PB3 gpio_af_od_up_init(GPIOA, GPIO_Pin_15); //编码器AB相输入口,复用开漏上拉 gpio_af_od_up_init(GPIOB, GPIO_Pin_3); GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_TIM2); GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_TIM2); TIM_DeInit(TIM2); TIM_TimeBaseStructure.TIM_Prescaler = 0; TIM_TimeBaseStructure.TIM_Period = ENCODER_RELOAD; //TIM2为32位定时器,这里把重载值设为最大,可以不考虑计数溢出 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure); TIM_EncoderInterfaceConfig(TIM2, TIM_EncoderMode_TI12, TIM_ICPolarity_Rising, TIM_ICPolarity_Rising); TIM_ICStructInit(&TIM_ICInitStructure); TIM_ICInitStructure.TIM_ICFilter = 0; TIM_ICInit(TIM2, &TIM_ICInitStructure); TIM2->CNT = COUNTER1_RESET; TIM_Cmd(TIM2, ENABLE); //定时读取脉冲数, 间隔10ms TIM6_init(100, 8400); }
void init_all(void) { GPIO_init(); DAC_DMA_init(); P24_init(); vdisplay_init(); codec_init(); codec_ctrl_init(); TIM6_init(); /* Initialize timer */ TIM3_init(); /* interrupts last... */ TIM4_init(); }
int main(void) { IO_init(); LEDALLOFF; __enable_irq(); // общее включение прерывания NVIC_EnableIRQ(TIM2_IRQn); TIM6_init(); LED1ON; while(1) { } }
int main(void) { BootLoaderStart(); firstInit(); set_defaults_all(&Preset, &Calibration); if (!start_load_all(&Preset, &Calibration)) set_errIO(ERRIO_LOADALL); interface_init(Current_state.preset_name); calibration_init(Current_state.calibration_name); noteOffStoreInit(); TIM4_init();//keyboard timer TIM6_init();//delay for temp messages TIM7_init(); //delay for MSC //Main loop while (1) { //Check note array to calculate velocity checkNoteArray(&Preset); checkSliders_events(Preset.sliders, Preset.AnalogMidiEnable); checkButtons_events(Preset.buttons, Preset.AnalogMidiEnable); receiveMidiData(); sendMidiData(); } }