初级会员

- 积分
- 96
- 金钱
- 96
- 注册时间
- 2015-6-3
- 在线时间
- 4 小时
|

楼主 |
发表于 2015-7-26 12:24:24
|
显示全部楼层
#include "timer.h"
#include "led.h"
#include "usart.h"
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //?±??????
TIM_TimeBaseStructure.TIM_Period = arr; //?è???????????ü??????×°????????×?????×°???????÷???????? ??????5000??500ms
TIM_TimeBaseStructure.TIM_Prescaler =psc; //?è??????×÷??TIMx?±?????????????¤·????? 10Khz??????????
TIM_TimeBaseStructure.TIM_ClockDivision = 0; //?è???±??·???:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM?ò??????????
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //?ù??TIM_TimeBaseInitStruct?????¨????????????TIMx???±???ù??????
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //???????¨??TIM3????,???í?ü??????
NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //TIM3????
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; //??????????0??
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //????????3??
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ?¨??±?????
NVIC_Init(&NVIC_InitStructure); //?ù??NVIC_InitStruct?????¨???????????????èNVIC?????÷
TIM_Cmd(TIM3, ENABLE); //????TIMx???è
}
//?¨?±?÷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
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_0|GPIO_Pin_1; //TIM_CH2
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //???????ì????
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &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_OC1Init(TIM3, &TIM_OCInitStructure); //?ù??T???¨???????????????èTIM3 OC2
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_OC2Init(TIM3, &TIM_OCInitStructure); //?ù??T???¨???????????????èTIM3 OC2
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_OC3Init(TIM3, &TIM_OCInitStructure); //?ù??T???¨???????????????èTIM3 OC2
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_OC4Init(TIM3, &TIM_OCInitStructure); //?ù??T???¨???????????????èTIM3 OC2
TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable); //????TIM3??CCR2?????¤×°???????÷
TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable); //????TIM3??CCR2?????¤×°???????÷
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //????TIM3??CCR2?????¤×°???????÷
TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable); //????TIM3??CCR2?????¤×°???????÷
TIM_Cmd(TIM3, ENABLE); //????TIM3
}
////////////////////////////////////////
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
int main(void)
{
delay_init(); //???±??????????
NVIC_Configuration(); //?è??NVIC????·?×é2:2??????????????2???ì????????
uart_init(9600); //????????????9600
LED_Init(); //LED??????????
TIM3_PWM_Init(14499,99);
TIM_SetCompare2(TIM3,19000);
delay_ms(2000);
TIM_SetCompare2(TIM3,1000);
delay_ms(1000);
while(1)
{
LED1 = 1;
delay_ms(100);
LED1 = !LED1;
delay_ms(100);
TIM_SetCompare1(TIM3,10000);
TIM_SetCompare2(TIM3,10000);
TIM_SetCompare3(TIM3,10000);
TIM_SetCompare4(TIM3,10000);
}
} |
|