1 | void initPWM(void)
|
2 | {
|
3 | GPIO_InitTypeDef GPIO_InitStructure;
|
4 | TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
|
5 | TIM_OCInitTypeDef TIM_OCInitStructure;
|
6 |
|
7 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
|
8 |
|
9 | /*Alternative function clock setup for GPIO */
|
10 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
|
11 | /*Clock setup for timer8 */
|
12 | RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);
|
13 | /*PC6,7,8,9 setup for timer8*/
|
14 | GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
|
15 | GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 |GPIO_Pin_7 |GPIO_Pin_8 |GPIO_Pin_9;
|
16 | GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
|
17 | GPIO_Init(GPIOC, &GPIO_InitStructure);
|
18 | /*Timer Base Initialization for timer8 */
|
19 | TIM_TimeBaseInitStructure.TIM_Prescaler=2;
|
20 | TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up ;
|
21 | TIM_TimeBaseInitStructure.TIM_Period = 4800-1;
|
22 | TIM_TimeBaseInitStructure.TIM_ClockDivision = 0;
|
23 | TIM_TimeBaseInit(TIM8,&TIM_TimeBaseInitStructure);
|
24 | /*Auto-reload always */
|
25 | TIM_ARRPreloadConfig(TIM8, DISABLE);
|
26 | /*Channels initialization for timer8 */
|
27 | TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
|
28 | TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable ;
|
29 | TIM_OCInitStructure.TIM_Pulse = 3600-1;
|
30 | TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
|
31 | TIM_OC1Init(TIM8, &TIM_OCInitStructure);
|
32 | TIM_OC2Init(TIM8, &TIM_OCInitStructure);
|
33 | TIM_OC3Init(TIM8, &TIM_OCInitStructure);
|
34 | TIM_OC4Init(TIM8, &TIM_OCInitStructure);
|
35 | /*CCRs auto-reload always */
|
36 | TIM_OC1PreloadConfig(TIM8,TIM_OCPreload_Disable);
|
37 | TIM_OC2PreloadConfig(TIM8,TIM_OCPreload_Disable);
|
38 | TIM_OC3PreloadConfig(TIM8,TIM_OCPreload_Disable);
|
39 | TIM_OC4PreloadConfig(TIM8,TIM_OCPreload_Disable);
|
40 | /*Start counter for timer8 */
|
41 | TIM_Cmd(TIM8, ENABLE);
|
42 | }
|