IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32使用PWM控制LED灯的亮灭程度 -> 正文阅读

[嵌入式]STM32使用PWM控制LED灯的亮灭程度

STM32使用PWM控制LED灯的亮灭程度

引言

只要你是做单片机、嵌入式相关的从业者,我相信就不可能不知道PWM。我们在开发中,除了对电路进行简单的数字量控制(打开/关闭),也就是“状态”的控制。还会进行一些模拟电路控制,也就是“程度”的控制,这样说或许有点抽象,举个例子,比如我们现在控制一个灯,简单的开灯,关灯就数字量的控制。控制灯的亮灭程度就是模拟量的控制。而PWM就是用来做程度控制的一种技术。

介绍

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。原理可以如图所示,

图中,我们假定定时器工作在向上计数 PWM模式,且当 CNT<CCRx 时,输出 0,当 CNT>=CCRx 时输出 1。那么就可以得到如上的 PWM示意图:当 CNT 值小于 CCRx 的时候,IO 输出低电平(0),当 CNT 值大于等于 CCRx 的时候,IO 输出高电平(1),当 CNT 达到 ARR 值的时候,重新归零,然后重新向上计数,依次循环。改变 CCRx 的值,就可以改变 PWM 输出的占空比,改变 ARR 的值,就可以改变 PWM 输出的频率,这就是 PWM 输出的原理。

软件设计

  1. STM32CubeMX配置

如果你是使用的HAL库,建议还是学会使用STM32Cubemx的配置,可以简化很多开发工作。

这里我们选择TIM3,使用其中的CH4通道,也就是PB1引脚。然后生成程序(如果STM32Cubemx完全不会,可以参考我以前的文章)。

  1. 控制LED灯亮灭

打开上面一步生成的工程,我们发现,里面已经生成了PWM的配置,我们只需要具体的进行功能的开发就够了。使能TIM3,使能 CH4输出.

	HAL_TIM_Base_Start_IT(&htim3);
	HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);

我们设置2个变量,用1个变量来存放占空比,另一个变量存放挡位,方便我们串口查看。

int ledtesk=0;//占空比
int LEDtime=0;//增加次数

在主循环中,设置占空比高于0XFFFF的时候,占空比和挡位进行清零,否则每次占空比加500,并设置挡位+1。

  while(1) 
  {
		usart_send[0]=LEDtime;   
		if(ledtesk<0xFFFF)
		{
			ledtesk=ledtesk+500;
			LEDtime++;
		}
		else
		{
			LEDtime=0;
			ledtesk=0;
		}
		  __HAL_TIM_SetCompare(&htim3, TIM_CHANNEL_4, ledtesk); //ledtesk占空比
		 HAL_UART_Transmit(&huart3,usart_send,1,portMAX_DELAY);	
   		 HAL_Delay(100);
  }
  1. 此时我们会看到LED灯逐渐的变亮,当到达最值后,LED灯灭。并且串口会进行显示上乘的次数,也可以理解为挡位。

挡位为5的时候,灯的状态。

挡位在10的时候,灯的状态。

后续

欢迎关注公众号:物联网知识。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-09-04 01:27:45  更:2022-09-04 01:28:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 16:24:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码