初中生
最后登录1970-1-1
在线时间 小时
注册时间2020-4-24
|
程序部分int main(void)
{
uint8_t ch;
int PWMvalue=0,FLag=1;
init();
Delay(20);
//printf("EXTI_Line15");
while(1)
{
if(FLag)
PWMvalue++;
else
PWMvalue--;
if(PWMvalue==200)
FLag=0;
if(PWMvalue==0)
FLag=1;
TIM_SetCompare1(TIM3,PWMvalue);
}
}
void init()
{
EXTI15_Config();
EXTI12_Config();
Key_Config();
UART1_Config();
PWM_Config();
LED_Config();
}
void PWM_Config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); //使能TIM3时钟
/***********设置TIM3的ARR和PSC**************/
TIM_TimeBaseStructure.TIM_Period = 899;//设置在下一个更新事件装入活动的自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler = 0;//时钟频率的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision = 0x00;//时钟分割
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//设置为向上计数模式
TIM_TimeBaseInit(TIM3, & TIM_TimeBaseStructure);
/***********设置TIM3_CH3的PWM模式及通道方向,使能TIM3的CH3输出 **************/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //选择 PWM 模式 2
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //比较输出使能
TIM_OCInitStructure.TIM_Pulse = 0;//设置待装入捕获比较寄存器的脉冲值
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //输出极性高
TIM_OC3Init(TIM3, &TIM_OCInitStructure); //初始化 TIM3 OC3
//TIM_CtrlPWMOutputs(TIM3,ENABLE); //MOE 主输出使能
TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable); //CH3 预装载使能
TIM_ARRPreloadConfig(TIM3, ENABLE); //使能 TIM3 在 ARR 上的预装载寄存器
TIM_Cmd(TIM3, ENABLE); //使能 TIM3
//TIM_ITConfig(TIM3,TIM_IT_CC3,ENABLE );
}
void LED_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA,ENABLE);
/************配置PA.0为PWM输出***************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//选PA.0为输出引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//引脚速率
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设PA.O为复用推免输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
/************配置PB.0为PWM输出***************/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//选PB.0为输出引脚
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//引脚速率
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//设PB.O为复用推免输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//TIM3复用功能部分映射
}
硬件部分在图片中
|
-
|