1.使用TIM3定时器发出pwm信号控制PB5端口达到控制电机的效果(控制电机的转动状态和速度)
timer.c
#include "timer.h"
#include "led.h"
u8 TIM5CH1_CAPTURE_STA=0;
u16 TIM5CH1_CAPTURE_VAL;
void TIM3_IRQHandler(void) //TIM3 ??
{
if(TIM_GetITStatus(TIM3, TIM_IT_Update)!=RESET)
{
LED1=!LED1;
TIM_ClearITPendingBit(TIM3, TIM_IT_Update );
}
}
void TIM3_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef time;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//??TIM3??
time.TIM_Period=arr;//????????
time.TIM_Prescaler=psc;//?????????????
time.TIM_ClockDivision=TIM_CKD_DIV1;//??????
time.TIM_CounterMode=TIM_CounterMode_Up;//TIM????
TIM_TimeBaseInit(TIM3,&time);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );//??????
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);
TIM_Cmd(TIM3,ENABLE);
}
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);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_P