初级会员

- 积分
- 132
- 金钱
- 132
- 注册时间
- 2014-3-8
- 在线时间
- 19 小时
|

楼主 |
发表于 2015-7-12 20:27:16
|
显示全部楼层
#include "timer.h"
#include "led.h"
#include "usart.h"
//////////////////////////////////////////////////////////////////////////////////
//±????ò?????§?°??????????×÷???í???????????????ü????????
//ALIENTEK????STM32??·?°?
//?¨?±?÷ ?????ú??
//??????×?@ALIENTEK
//????????:www.openedv.com
//????????:2012/9/4
//°?±???V1.1
//°??¨?ù??????°?±?????
//Copyright(C) ?????????í??×????????????? 2009-2019
//All rights reserved
//********************************************************************************
//V1.1 20120904
//1,????TIM3_PWM_Init??????
//2,????LED0_PWM_VAL?ê?¨????????TIM3_CH2???í
//////////////////////////////////////////////////////////////////////////////////
//?¨???¨?±?÷3??????????
//?????±????????APB1??2±?????APB1??36M
//arr??×?????×°????
//psc???±???¤·?????
//?????????????¨?±?÷3!
//?¨?±?÷3????·??????ò
void TIM3_IRQHandler(void) //TIM3????
{
if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //?ì?é???¨??TIM????·??ú??·?:TIM ??????
{
TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //????TIMx???????????í??:TIM ??????
// LED1=!LED1;
}
}
//TIM3  WM??·???????
//PWM??????????
//arr??×?????×°??
//psc???±???¤·?????
void TIM3_PWM_Init(u16 arr,u16 psc)
{
GPIO_InitTypeDef GPIO_InitStructure;
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //?????¨?±?÷3?±??
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); //????GPIO???è??AFIO???????????é?±??
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //Timer3??·??????? TIM3_CH2-> B5
//?è??????????????????????,????TIM3 CH2??PWM?????¨?? GPIOB.5 GPIOB.4
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_4; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);//??????GPIO
//?è??????????????????????,????TIM3 CH2??PWM?????¨?? B0,B1
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode =GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; //TIM_CH2
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì????
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
// GPIO_Init(GPIOA, &GPIO_InitStructure);//??????GPIO
//??????TIM3
TIM_TimeBaseStructure.TIM_Period = arr; //?è???????????ü??????×°????????×?????×°???????÷????????
TIM_TimeBaseStructure.TIM_Prescaler =psc; //?è??????×÷??TIMx?±?????????????¤·?????
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM?ò??????????
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //?ù??TIM_TimeBaseInitStruct?????¨????????????TIMx???±???ù??????
//??????TIM3 Channel2  WM????
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //?????¨?±?÷????:TIM?????í???÷??????2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //±???????????
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //????????:TIM????±?????????
TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Set;
TIM_OC1Init(TIM3, &TIM_OCInitStructure); //??TIM_OCInitStruct???????????TIMx
TIM_OC2Init(TIM3, &TIM_OCInitStructure);
TIM_OC3Init(TIM3, &TIM_OCInitStructure);
TIM_OC4Init(TIM3, &TIM_OCInitStructure);
TIM_Cmd(TIM3, ENABLE);
TIM_CtrlPWMOutputs(TIM3, ENABLE);
}
补充一下四路的 |
|