建设营销网站要什么,wordpress商用收费不,什么网站做任务能挣,网站设计科技有限公司1、PWM 定义 PWM#xff0c;全称为脉冲宽度调制#xff08;Pulse Width Modulation#xff09;#xff0c;它通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 PWM#xff0c;全称为脉冲宽度调制#xff08;Pulse Width Modulation#xff… 1、PWM 定义 PWM全称为脉冲宽度调制Pulse Width Modulation它通过改变信号的高电平和低电平的持续时间比例来控制输出信号的平均功率或电压。 PWM全称为脉冲宽度调制Pulse Width Modulation是一种调节信号的方法。简单来说PWM 就是通过改变信号的高电平和低电平的时间比例来控制输出的平均电压或功率。 想象一下我们有一个周期性的信号其中高电平表示“开”状态低电平表示“关”状态。PWM 就是在一个固定的时间周期内通过改变高电平和低电平的持续时间来控制信号的特性。例如如果我们将高电平持续时间设为较长低电平持续时间设为较短那么平均电压或功率就会比较高。相反如果高电平持续时间设为较短低电平持续时间设为较长平均电压或功率就会比较低。 通过不断地调整高电平和低电平的持续时间比例我们可以得到不同的输出效果。这种方法常用于控制电机的速度、调光灯的亮度、音频设备的音量等。 总结起来PWM 通过改变信号的高电平和低电平的时间比例来控制输出的平均电压或功率是一种常用的调节信号的方法。 参数 周期 高低电平变换需要的时间单位ms T1/ f T是周期 f是频率 频率 在单位时间内高低电平切换的次数单位时间内PWM有多少个周期Hz 50Hz一个周期是20ms,一秒有50个PWM周期 占空比 在一个脉冲周期内高电平的时间占整个周期时间的比例单位是% (0%-100%)。 工作原理 自动装载寄存器 (TIMx_ARR) 捕获/比较寄存器(TIMx_CCRx) 计数器寄存器 (TIMx_CNT) 输入捕获 输入捕获可以用来捕获外部事件比如引脚的电平变化上升沿下降沿并记录下变化的时间通常可以用来测量外部信号的频率或者电平持续的时间 输出比较 此项功能是用来控制一个输出波形当计数器与捕获/比较寄存器的内容相同时输出比较功能做出相应动作比如电平的翻转。通常用于生成PWM波形 向上计数 输出过程 当0-t1这段时间计数器寄存器的CNT的值是小于CCR输出高电平。 当t1-t2这段时间计数器寄存器的CNT的值是大于CCR且小于ARR的输出低电平。 当CNT的值达到ARR里的值时产生溢出事件自动清零再次从0开始向上计数。 应用 led灯亮度调节、蜂鸣器控制、电机转速控制 练习通过PWM信号调节LED灯亮度 选用引脚设置为 选用外部晶振 配置外部晶振及频率 打开定时器并设为pwm 设置预分频和脉冲占空比 PWM初始化 HAL库函数 HAL_StatusTypeDef HAL_TIM_PWM_Start (TIM_HandleTypeDef * htim, uint32_t Channel) 功能启动PWM信号生成 参数 htim:TIM句柄 Channel: TIM要启用的通道该参数可以是以下值之一 XXXXXXXXX 返回值状态 代码编写 练习实现呼吸灯效果 for(num1000;num0;num-2){TIM3-CCR3num;HAL_Delay(1);}for(num0;num1000;num2){TIM3-CCR3num;HAL_Delay(1);}2、蜂鸣器 简介 蜂鸣器是采用直流电压供电的一个电子讯响器。 分类 有源蜂鸣器 内部带有震荡源时钟源一通电就可以震荡发出响声驱动较容易。 因为是内部集成好的震荡电路所以频率是固定的。 无源蜂鸣器 内部没有震荡源直流电无法驱动所以用一个方波信号来进行驱动 价格便宜且频率可控。需要通过编程控制声调和响度驱动稍麻烦。 蜂鸣器发声实验 蜂鸣器模块电路图 方法一让单片机通过D1口交替输出高低电平 方法二利用定时器输出PWM信号控制蜂鸣器 注意这里是互补输出所以启动函数不一样 HAL_StatusTypeDef HAL_TIMEx_PWMN_Start (TIM_HandleTypeDef * htim, uint32_t Channel) 功能开始在互补输出端产生PWM信号 参数 htimTIM句柄 Channel TIM_CHANNEL_1已选择TIM通道1 TIM_CHANNEL_2已选择TIM通道2 TIM_CHANNEL_3已选择TIM通道3 TIM_CHANNEL_4已选择TIM通道4 返回值状态 思考声调和响度分别由什么决定 ARR- 周期-1/频率 周期越大频率越小声调越低 周期越小频率越大声调越高 CCR-脉冲 -占空比 占空比越高通电时间越长响度越响 占空比越小通电时间越短响度越小 3、ADC模拟信号转数字信号 A模拟信号Analog 模拟信号是指用连续变化的物理量所表达的信息如温度、湿度、压力、长度、电流、电压等等我们通常又把模拟信号称为连续信号它在一定的时间范围内可以有无限多个不同的取值。模拟信号传输过程中先把信息信号转换成几乎“一模一样”的波动电信号(因此叫“模拟”)传感器可以将非电学量转换成电学量 D数字Digital 0、1二进制 数字信号是指自变量是离散的、因变量也是离散的信号这种信号的自变量用整数表示因变量用有限数字中的一个数字来表示。在计算机中数字信号的大小常用有限位的二进制数表示。 C转换器Converter 转换器converter是指将一种信号转换成另一种信号的装置。信号是信息存在的形式或载体。在自动化仪表设备和自动控制系统中常将一种信号转换成另一种与标准量或参考量比较后的信号以便将两类仪表联接起来因此转换器常常是两个仪表或装置间的中间环节。 最直观的体现模拟信号是连续变化的曲线而数字量是不连续的一个个离散的点。 概念 ADC全称模数转换器Analog-to-Digital Converter模拟数字转换器即A/D转换器ADC的作用就是将连续变化的模拟信号转换为离散的数字信号。通常的模数转换器是将一个输入电压信号转换为一个输出的数字信号。由于数字信号本身不具有实际意义仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小 。 极其的巧妙设计模拟转数字信号5分钟让你看明白ADC的工作原理_哔哩哔哩_bilibili ADC简介 12位ADC是一个逐次逼近型模数转换器。 它有多达19个多路通道允许它测量来自16个外部源和3个内部源温度传感、内部参考电压、外部电池的信号。 各种通道的A/D转换可以在单个、连续、扫描或间断的模式下进行。 ADC的结果被存储在一个向左对齐或向右对齐的16位数据寄存器中。 ADC特性 量程能测量电压的范围0~3.6V单片机供电范围1.8 到3.6 分辨率ADC的分辨率通常以输出二进制数的位数表示位数越多分辨率越高一般来说分辨率越高转化时间越长。 可配置的转换精度6位8位10位12位。 转化时间模拟输入电压在允许的最大变化范围内从转换开始到获得稳定的数字量输出所需要的时间称为转换时间 4. ADC的时钟 SYSCLK 系统时钟 HSI 高速内部时钟高速内部RC PLLP 锁相环倍频器高速内部/高速外部 工作模式 单个、连续、扫描或间断的模式 1、单次转换模式ADC只执行一次转换CHx:通道 连续转换模式转换结束之后马上开始新的转换没有停止扫描模式ADC扫描选中的所有通道在每个组的每个通道上执行单次转换。在每个转换结束时这一组的下一个通道被自动转换。如果设置了CONT位开启了连续转换模式转换不会在选择组的最后一个通道上停止而是再次从选择组的第一个通道继续转换。间断模式触发一次转换一个通道再触发再转换。在所选转换通道循环由触发信号启动新一轮的转换直到转换完成为止。 EOC通道转换结束信号 EOS序列转换结束信号 ADC单通道 单次转换只进行一次ADC转换配置为“单次转换模式”扫描模式关闭。ADC通道转换一次后就停止转换。等待再次使能后才会重新转换 连续转换进行连续ADC转换配置为“连续转换模式”扫描模式关闭。ADC通道转换一次后接着进行下一次转换不断连续。没有STOP ADC多通道 单次转换 只进行一次ADC转换配置为“单次转换模式”扫描模式使能。ADC的多个通道按照配置的顺序依次转换一次后就停止转换。等待再次使能后才会重新转换。 连续转换进行连续ADC转换配置为“连续转换模式”扫描模式使能。ADC的多个通道按照配置的顺序依次转换一次后接着进行下一次转换不断连续。 简单来说ADC的作用就是将连续变化的模拟信号转换为离散的数字信号。我们生活中的声音、光线、温度等许多信号都是模拟信号而计算机处理的是数字信号所以需要使用ADC将模拟信号转换为计算机可以理解的数字形式。 实际上ADC内部有一个采样和量化的过程。首先它会以一定的时间间隔对模拟信号进行采样即在一段时间内获取模拟信号的数值。然后采样到的模拟信号经过量化处理即将连续的模拟信号映射为离散的数字数值通常使用二进制表示。 ADC的输出就是经过采样和量化后得到的数字信号这些数字可以被计算机或其他数字设备处理和分析。通过ADC我们可以将各种模拟信号转换为数字形式以便进行存储、处理和控制。 单通道单次转换实验 实验采集光照值、火焰、烟雾并将数值打印到串口 分析原理图 光照模块 火焰模块 MX配置 串口配置 模数转换接口配置 ADC设置 编程实现 1.启动ADC (HAL精简87页) HAL_StatusTypeDef HAL_ADC_Start (ADC_HandleTypeDef * hadc) 功能启动ADC开始转换 参数ADC_HandleTypeDef * hadc 句柄 返回值 状态 2.等待转换结束 (HAL精简88页) HAL_StatusTypeDef HAL_ADC_PollForConversion (ADC_HandleTypeDef * hadc, uint32_t Timeout) 功能等待转换完成 参数 ADC_HandleTypeDef * hadc 句柄 uint32_t Timeout 超时时间 返回值转换状态 3.获取转换结果 (HAL精简89页) uint32_t HAL_ADC_GetValue (ADC_HandleTypeDef * hadc) 功能获取转换结果 参数ADC_HandleTypeDef * hadc 句柄 返回值转换结果 4.停止ADC (HAL精简89页) HAL_StatusTypeDef HAL_ADC_Stop (ADC_HandleTypeDef * hadc) 功能停止ADC 参数ADC_HandleTypeDef * hadc 句柄 返回值 状态 light接收至少用16位接收 HAL_ADC_Start(hadc1); //启动ADC转换
HAL_ADC_PollForConversion(hadc1,1000); //等待转换
light HAL_ADC_GetValue(hadc1); //获取采集的ADC值
HAL_ADC_Stop(hadc1); //ADC停止ADC
printf(lighet %d\n,light);
HAL_Delay(1000);int fputc(int ch,FILE* p) //printf重写
{while(!(USART1-ISR (17)));USART1-TDR ch;return ch;
}3.6多通道扫描模式单次转换实验 采集光照值和按键值通过串口打印 MX配置 在上一个工程的基础上增加按键的ADC 将PA1设置为ADC的输入通道 选择序列-扫描模式 代码编写 现在有两个通道需要转换且获取结果当第一个通道转换完成时会产生一个EOC信号当整个序列转换完成时会产生一个EOS信号