目标:
1.通过按键1切换pwm频率的切换。
2.通过按键2实现pwm占空比的切换。
3.备注:不附加硬件原理图,但是通过描述简单介绍引脚的连接。
硬件原理描述:
1.通过3个IO口实现16个按键的检测。
2.按键1,按键2不多做描述,通过键盘扫描程序循环检测按键
3.通过TIM2 CHI通道PA0输出波形。
pwm输出配置功能函数:
#include "pwm.h"
static u16 Tim_Prescaler=35; //配置TIM默认时钟分频
static u16 TIMCompare1=200; //配置TIM默认脉冲比较值
void GPIO_cfg() //配置pwm输出相关引脚
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA的时钟
//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //复用时钟不需要失能
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //选择引脚0
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //输出频率最大50MHz
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出
GPIO_Init(GPIOA,&GPIO_InitStructure);
}
void TIMER_cfg(void)//配置TIM2
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟
//设置预分频系数
TIM_TimeBaseStructure.TIM_Prescaler =Tim_Prescaler;
//设置计数自动重装值大小
TIM_TimeBaseStructure.TIM_Period = 1000;
//设置计数器模式为向上
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
//设置时钟分割---不分割
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
//将配置应用