1.PWM控制LED达到呼吸灯
首先需要注意的是呼吸灯的效果是通过改变亮灭亮灭的速度完成(余晖效应)。
思路:
1.RCC开启GPIOA和TIM2+2.初始化时基单元+选择内部时钟+3.初始化输出比较单元+4.初始化GPIO+5.开启计数器+6.自定义函数(推荐使用PWM_SetCompare1命名)
补充:
1.使用的库函数是RCC_APB2Per....
2.初始化时基单元使用的是TIM_TimBaseInit();+TIM_IniternalClock();
3.TIM_OCInit();
4.GPIO_Init();
5.Tim_Cmd();
6.自定义函数PWM_SetCompare1;真正起作用的是TIM_SetCompare();
ARR,CCR,PSC用来计算频率,占空比,分辨率。公式如下
Freq=ck_PSC/(PSC+1)/(ARR+1) Duty=CCR/(ARR+1) Reso=1/(ARR+1)
2.PWM驱动舵机
思路:
与PWM控制呼吸灯基本相同,只增加以下不同的地方:
封装舵机函数,推荐自定义void Servo_Init().
封装一个函数,使之PWM控制呼吸灯变为能观察的角度。实际起作用的函数是PWM_SetCompare(Angle/180*200+500);注:Angle是你想要传入的观察的角度值
3.PWM驱动直流电机
思路:
电机转动的条件是输入端的AIN1和AIN2必须一个高电平,一个低电平。
推荐封装为Motor_Init();
输出端有两个,所以使用两个GPIO引脚。
需要显示速度,所以需要自定义速度函数,该函数需要传参,推荐自定义为void Motor_SetSpeed(Speed);实际执行时,先判断参数正负,使之速度有正负,然后使用GPIO_ReSetBits();和GPIO_SetBits(),使之变为一高一低。
4.笔记: