/** * @brief Configure TIM1 to generate 6 Steps PWM signal * @param None * @retval None */ static void TIM1_Config(void) { /* TIM1 Peripheral Configuration */ TIM1_DeInit(); /* Time Base configuration */ TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0); /* Channel 1, 2 and 3 Configuration in TIMING mode */ /* TIM1_Pulse = 2047 */ TIM1_OC1Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 2047, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET); /* TIM1_Pulse = 1023 */ TIM1_OC2Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 1023, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET); /* TIM1_Pulse = 511 */ TIM1_OC3Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, 511, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET); /* Automatic Output enable, Break, dead time and lock configuration*/ TIM1_BDTRConfig( TIM1_OSSISTATE_ENABLE, TIM1_LOCKLEVEL_OFF, 1, TIM1_BREAK_DISABLE, TIM1_BREAKPOLARITY_LOW, TIM1_AUTOMATICOUTPUT_ENABLE); TIM1_CCPreloadControl(ENABLE); TIM1_ITConfig(TIM1_IT_COM, ENABLE); /* TIM1 counter enable */ TIM1_Cmd(ENABLE); }
/** * @brief Configure TIM1 to allow sine wave generation * @param None * @retval None */ static void TIM1_Config(void) { TIM1_DeInit(); /* Time base configuration */ /* TIM1_Period = INIT_TIM1_ARR TIM1_Prescaler = 0 TIM1_RepetitionCounter=0 */ TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, INIT_TIM1_ARR, 0); /* PWM configuration */ /* TIM1_OCMode = TIM1_OCMODE_PWM1 TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE TIM1_Pulse = INIT_TIM1_CCR1 TIM1_OCPolarity = TIM1_OCPOLARITY_LOW */ TIM1_OC1Init(TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, INIT_TIM1_CCR1, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_RESET, TIM1_OCNIDLESTATE_RESET); /* Update Interrupt Enable */ TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE); /* ARRPreload Enable */ TIM1_ARRPreloadConfig(ENABLE); /* Enable TIM1 */ TIM1_Cmd(ENABLE); /* Enable CC1 output*/ TIM1_CtrlPWMOutputs(ENABLE); }
void initTimer(void) { TIM1_DeInit(); TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_UP,5000-1, 0); //5MS TIM1_ARRPreloadConfig(ENABLE); TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE); TIM1_Cmd(ENABLE); }
/** * @brief Configure TIM1 to generate 3 complementary signals, to insert a * defined dead time value, to use the break feature and to lock the * desired parameters * @param None * @retval None */ static void TIM1_Config(void) { /* TIM1 Peripheral Configuration */ TIM1_DeInit(); /* Time Base configuration */ /* TIM1_Prescaler = 0 TIM1_CounterMode = TIM1_COUNTERMODE_UP TIM1_Period = 65535 TIM1_RepetitionCounter = 0 */ TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 65535,0); /* Channel 1, 2 and 3 Configuration in PWM mode */ /* TIM1_OCMode = TIM1_OCMODE_PWM2 TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE TIM1_OutputNState = TIM1_OUTPUTNSTATE_ENABLE TIM1_Pulse = CCR1_Val TIM1_OCPolarity = TIM1_OCPOLARITY_LOW TIM1_OCNPolarity = TIM1_OCNPOLARITY_LOW TIM1_OCIdleState = TIM1_OCIDLESTATE_SET TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET */ TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /* TIM1_Pulse = CCR2_Val */ TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR2_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /* TIM1_Pulse = CCR3_Val */ TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_LOW, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /* Automatic Output enable, Break, dead time and lock configuration */ /* TIM1_OSSIState = TIM1_OSSISTATE_ENABLE TIM1_LockLevel = TIM1_LOCKLEVEL_1 TIM1_DeadTime = 117 TIM1_Break = TIM1_BREAK_ENABLE TIM1_BreakPolarity = TIM1_BREAKPOLARITY_HIGH TIM1_AutomaticOutput = TIM1_AUTOMATICOUTPUT_ENABLE */ TIM1_BDTRConfig( TIM1_OSSISTATE_ENABLE, TIM1_LOCKLEVEL_1, 117, TIM1_BREAK_ENABLE, TIM1_BREAKPOLARITY_HIGH, TIM1_AUTOMATICOUTPUT_ENABLE); /* TIM1 counter enable */ TIM1_Cmd(ENABLE); /* Main Output Enable */ TIM1_CtrlPWMOutputs(ENABLE); }
void CAN_Node_OW_init(void) { GPIO_Init(OW_PORT, OW_IN, GPIO_MODE_IN_FL_NO_IT); // external pull up GPIO_Init(OW_PORT, OW_OUT, GPIO_MODE_OUT_PP_LOW_FAST); GPIO_WriteLow(OW_PORT, OW_OUT); // Configure TIM1 to run at 1MHz frequency. // NOTE assuming master clock frequency is 8MHz. TIM1_DeInit(); TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 60, 0); TIM1_SelectOnePulseMode(TIM1_OPMODE_SINGLE); }
/** * @brief Configure TIM1 to generate 7 PWM signals with 4 different duty cycles * @param None * @retval None */ static void TIM1_Config(void) { TIM1_DeInit(); /* Time Base configuration */ /* TIM1_Period = 4095 TIM1_Prescaler = 0 TIM1_CounterMode = TIM1_COUNTERMODE_UP TIM1_RepetitionCounter = 0 */ TIM1_TimeBaseInit(0, TIM1_COUNTERMODE_UP, 4095, 0); /* Channel 1, 2,3 and 4 Configuration in PWM mode */ /* TIM1_OCMode = TIM1_OCMODE_PWM2 TIM1_OutputState = TIM1_OUTPUTSTATE_ENABLE TIM1_OutputNState = TIM1_OUTPUTNSTATE_ENABLE TIM1_Pulse = CCR1_Val TIM1_OCPolarity = TIM1_OCPOLARITY_LOW TIM1_OCNPolarity = TIM1_OCNPOLARITY_HIGH TIM1_OCIdleState = TIM1_OCIDLESTATE_SET TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET */ TIM1_OC1Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR1_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /*TIM1_Pulse = CCR2_Val*/ TIM1_OC2Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR2_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /*TIM1_Pulse = CCR3_Val*/ TIM1_OC3Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_ENABLE, CCR3_Val, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET); /*TIM1_Pulse = CCR4_Val*/ TIM1_OC4Init(TIM1_OCMODE_PWM2, TIM1_OUTPUTSTATE_ENABLE, CCR4_Val, TIM1_OCPOLARITY_LOW, TIM1_OCIDLESTATE_SET); /* TIM1 counter enable */ TIM1_Cmd(ENABLE); /* TIM1 Main Output Enable */ TIM1_CtrlPWMOutputs(ENABLE); }
void led_on(void) { TIM1_DeInit(); /* TIM1 configuration: * TIM1 in PWM mode without output disabled. We only interest in the interrupts. * Period of PWM is 1024us; Duty cycle adjustable from 1/16 - 15/16. * With 16Mhz clock, we use: * TIM1_Period = 16 - 1 * TIM1_Prescaler = 1024 - 1 * TIM1_Pulse = [0..15] */ TIM1_TimeBaseInit(1023, TIM1_COUNTERMODE_UP, 15, 0); /* TIM1_OCMode = TIM1_OCMODE_PWM1 TIM1_OutputState = TIM1_OUTPUTSTATE_DISABLED TIM1_OutputNState = TIM1_OUTPUTNSTATE_DISABLED TIM1_Pulse = [1..16], change using TIM1_SetCompare1 TIM1_OCPolarity = TIM1_OCPOLARITY_LOW; Doesn't matter as output is disabled TIM1_OCNPolarity = TIM1_OCNPOLARITY_HIGH; Doesn't matter as output is disabled TIM1_OCIdleState = TIM1_OCIDLESTATE_SET; Doesn't matter as output is disabled TIM1_OCNIdleState = TIM1_OCIDLESTATE_RESET; Doesn't matter as output is disabled */ TIM1_OC1Init ( TIM1_OCMODE_PWM1, TIM1_OUTPUTSTATE_DISABLE, TIM1_OUTPUTNSTATE_DISABLE, _duty, TIM1_OCPOLARITY_LOW, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_RESET ); TIM1_ITConfig((TIM1_IT_TypeDef)(TIM1_IT_UPDATE | TIM1_IT_CC1), ENABLE); /* TIM1 Main Output disabled */ TIM1_CtrlPWMOutputs(DISABLE); /* TIM1 counter enable */ TIM1_Cmd(ENABLE); }
void CAN_Node_OW_deinit(void) { GPIO_Init(OW_PORT, OW_OUT, GPIO_MODE_IN_FL_NO_IT); TIM1_DeInit(); }