STM32小项目总结3(内含:1.PWM控制LED达到呼吸灯+2.PWM驱动舵机+3.PWM驱动直流电机+4.笔记)

简介: STM32小项目总结3(内含:1.PWM控制LED达到呼吸灯+2.PWM驱动舵机+3.PWM驱动直流电机+4.笔记)

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.笔记:


444d79d7da9c406fbab86affbea45622.jpg




相关文章
|
13天前
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
|
15天前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-3
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-3
|
15天前
|
传感器
基于STM32与FreeRTOS的四轴机械臂项目-2
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-2
|
15天前
|
传感器 存储
基于STM32与FreeRTOS的四轴机械臂项目-1
基于STM32与FreeRTOS的四轴机械臂项目
基于STM32与FreeRTOS的四轴机械臂项目-1
|
15天前
【STM32】基于HAL库的360度编码器、摇杆代码编写
【STM32】基于HAL库的360度编码器、摇杆代码编写
|
15天前
|
传感器