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




相关文章
|
3月前
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
|
4月前
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
STM32Cubemx PWM驱动加湿器模拟火山喷发效果
67 14
|
4月前
STM32Cubemx PWM驱动SG90舵机
STM32Cubemx PWM驱动SG90舵机
160 13
|
4月前
STM32CubeMX mpu6050驱动
STM32CubeMX mpu6050驱动
72 10
|
4月前
STM32CubeMX EC11旋转编码器驱动
STM32CubeMX EC11旋转编码器驱动
215 10
|
4月前
STM32CubeMX OLED驱动
STM32CubeMX OLED驱动
65 10
|
4月前
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
196 1
|
4月前
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
59 0
|
3月前
|
编解码 算法
掌握PWM:STM32F103实现PWM控制直流电机小风扇
PWM,即脉冲宽度调制(Pulse Width Modulation),是一种广泛应用于电子和电机控制领域的信号编码方法。PWM的核心思想是通过改变数字信号的脉冲宽度来模拟模拟信号的幅度变化,从而达到控制输出功率的目的。
502 0
|
4月前
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
141 0