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




相关文章
stm32学习 3-2 LED流水灯
stm32学习 3-2 LED流水灯
227 4
stm32学习3-1 LED闪烁
stm32学习3-1 LED闪烁
159 4
STM32CubeMX WS2812B灯驱动
STM32CubeMX WS2812B灯驱动
1956 1
STM32CubeMX ULN2003步进电机驱动
STM32CubeMX ULN2003步进电机驱动
471 0
|
传感器
手把手在STM32F103C8T6上构建可扩展可移植的DHT11驱动
【8月更文挑战第29天】本文详细介绍在STM32F103C8T6上构建可扩展且可移植的DHT11温湿度传感器驱动的步骤,包括硬件与软件准备、硬件连接、驱动代码编写及测试。通过这些步骤,可根据实际项目需求优化和扩展代码。
844 0
STM32Cubemx TB6612直流电机驱动
STM32Cubemx TB6612直流电机驱动
1339 0
使用STM32F103标准库实现定时器控制LED点亮和关闭
通过这篇博客,我们学习了如何使用STM32F103标准库,通过定时器来控制LED的点亮和关闭。我们配置了定时器中断,并在中断处理函数中实现了LED状态的切换。这是一个基础且实用的例子,适合初学者了解STM32定时器和中断的使用。 希望这篇博客对你有所帮助。如果有任何问题或建议,欢迎在评论区留言。
1668 2
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
stm32f407探索者开发板(十七)——串口寄存器库函数配置方法
1969 0
|
缓存 网络协议 算法
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)
[蓝桥杯嵌入式]hal库 stm32 PWM的使用(随时修改占空比,随时修改频率)