pwm在学excel哪本书好里学到的

pwm 的数学原理_百度知道
pwm 的数学原理
提问者采纳
PWM的数学解释是用一段时间内的平均值相等的一个量替代另外一个量。平均值相等是指短时间内(相当于AD的采样时间)特定占空比的方波代替一个常数,方波的平均值与常数相等。
有没有从傅里叶函数方面的解释
傅里叶展开的话,除了调制波的各次谐波之外,还增加了载波频率附近的高次谐波,如果用一个低通滤波器将高次谐波滤除,剩下的就是调制波,相当于完成了解调。
提问者评价
来自团队:
其他类似问题
为您推荐:
数学原理的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁TED:我们从五百万本书里学到了什么 TED:我们从五百万本书里学到了什么 - 高清在线观看 - 腾讯视频
TED:我们从五百万本书里学到了什么
TED:我们从五百万本书里学到了什么
1个视频,总播放:
扫描二维码随身看视频
用手机或平板摄像头拍下右侧的二维码,您可以:
1 在手机或平板上继续观看该视频
2 分享给你的微信好友或者朋友圈
好莱坞影院推荐
史上最美礼服梦幻来袭
蓝胖子的深情告白
好莱坞会员后使用快捷导航没有帐号?
STM32自学系列——2.定时器TIM和PWM的输出【暑期持续更新】
本帖最后由 明少丶 于
00:42 编辑
学习完前面的STM32系统框架,时钟,GPIO和按键,我们开始由浅入深的逐个攻破STM32的所有功能。
我自己用的是stm32f103rc可以看看它的功能描述:
1.jpg (41.32 KB, 下载次数: 39)
20:54 上传
内容是:ARM 32位 cortex-M3内核 最高工作频率72MHZ 256KB Flash 48KB SRAM
内嵌RC振荡时钟 8MHZ和32MHZ ,RTC(实时时钟) , NIV(中断) , JTAG SWD仿真下载口 ,
PWM , 2个16位高级、2个16位基本、2个16位通用定时器 , 滴答定时器 , 3个 SPI/I2S ,
5个USART串口 , USB2.0 , CAN通信 , 3个12位 16通道AD转换器 , 2个12位 DA转换器 ,
SDIO(sd卡模块) , 高速i/o端口。
大体意思就是这样。&&所以说其实我们要学的内容不多,几天突破一个。很快我们就可以利用它来DIY一些高端、大气的电子类作品,是不是很开心。我们开始下面的内容:
& && && & STM32的定时器外设功能强大得超出了想像力,STM32一共有8个都为16位的定时器。其中TIM6、TIM7是基本定时器;TIM2、TIM3、TIM4、TIM5是通用定时器;TIM1和TIM8是高级定时器。这些定时器使STM32具有定时、信号的频率测量、信号的PWM测量、PWM输出、三相6步电机控制及编码器接口等功能,都是专门为工控领域量身订做的。
& && && &基本定时器:具备最基本的定时功能,下面是它的结构:
2.jpg (44.56 KB, 下载次数: 34)
21:50 上传
我们来看看它的启动代码:
void TIM2_Configuration(void)
{&& 基本定时器TIM2的定时配置的结构体(包含定时器配置的所有元素例如:TIM_Period = 计数值)
& & TIM_TimeBaseInitTypeDef&&TIM_TimeBaseS
& & 设置TIM2_CLK为72MHZ (即TIM2外设挂在APB1上,把它的时钟打开。)& && &&&
& & RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2 , ENABLE);
& & 设置计数值位1000
& & TIM_TimeBaseStructure.TIM_Period=1000;
& & 将TIM2_CLK为72MHZ 除以72 = 1MHZ为定时器的计数频率
& & TIM_TimeBaseStructure.TIM_Prescaler= 71;
& & 这个TIM_ClockDivision是设置时钟分割,这里不分割还是1MHZ的计数频率
& & TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
& & 设置为向上计数模式;(计数模式有向上,向下,中央对齐1,中央对齐2,中央对齐3)
& & TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
& & 将配置好的设置放进stm32f10x-tim.c的库文件中
& & TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
& & 清除标志位
& & TIM_ClearFlag(TIM2, TIM_FLAG_Update);
& & 使能TIM2中断
& & TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
& & 使能TIM2外设& && &&&
& & TIM_Cmd(TIM2, ENABLE);& && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && && &
& && & 通用定时器:就比基本定时器复杂得多了。除了基本的定时,它主要用在测量输入脉冲的频率、脉冲宽与输出PWM脉冲的场合,还具有编码器的接口。
3.jpg (81.47 KB, 下载次数: 42)
22:46 上传
我们来详细讲解:如何生成PWM脉冲
通用定时器可以利用GPIO引脚进行脉冲输出,在配置为比较输出、PWM输出功能时,捕获/比较寄存器TIMx_CCR被用作比较功能,下面把它简称为比较寄存器。
这里直接举例说明定时器的PWM输出工作过程:若配置脉冲计数器TIMx_CNT为向上计数,而重载寄存器TIMx_ARR被配置为N,即TIMx_CNT的当前计数值数值X在TIMxCLK时钟源的驱动下不断累加,当TIMx_CNT的数值X大于N时,会重置TIMx_CNT数值为0重新计数。
而在TIMxCNT计数的同时,TIMxCNT的计数值X会与比较寄存器TIMx_CCR预先存储了的数值A进行比较,当脉冲计数器TIMx_CNT的数值X小于比较寄存器TIMx_CCR的值A时,输出高电平(或低电平),相反地,当脉冲计数器的数值X大于或等于比较寄存器的值A时,输出低电平(或高电平)。
如此循环,得到的输出脉冲周期就为重载寄存器TIMx_ARR存储的数值(N+1)乘以触发脉冲的时钟周期,其脉冲宽度则为比较寄存器TIMx_CCR的值A乘以触发脉冲的时钟周期,即输出PWM的占空比为 A/(N+1) 。
如果不想看的可以直接看我标注的红色字体,就大体可以理解。
下面我们来编写具体代码和讲解:
void TIM3_GPIO_Config(void)
{配置TIM3复用输出PWM的IO
&&GPIO_InitTypeDef GPIO_InitS
&&打开TIM3的时钟
&&RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
&&打开GPIOA和GPIOB的时钟
&&RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);
&&配置PA6.PA7的工作模式
&&GPIO_InitStructure.GPIO_Pin =&&GPIO_Pin_6 | GPIO_Pin_7;
&&GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;& && &&&
&&GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
&&GPIO_Init(GPIOA, &GPIO_InitStructure);
&&配置PB0.PB1的工作模式
&&GPIO_InitStructure.GPIO_Pin =&&GPIO_Pin_0 | GPIO_Pin_1;
&&GPIO_Init(GPIOB, &GPIO_InitStructure);
void TIM3_Mode_Config(void)
& && &&&TIM_TimeBaseInitTypeDef&&TIM_TimeBaseS//初始化TIM3的时间基数单位
& && &&&TIM_OCInitTypeDef&&TIM_OCInitS//初始化TIM3的外设
& && && &u16 CCR1_Val = 500;& && &&&
& && && &u16 CCR2_Val = 375;
& && && &u16 CCR3_Val = 250;
& && && &u16 CCR4_Val = 125;//PWM信号电平跳变值(即计数到这个数值以后都是低电平之前都是高电平)
/* -----------------------------------------------------------------------
& & TIM3 Channel1 duty cycle = (TIM3_CCR1/ TIM3_ARR+1)* 100% = 50%
& & TIM3 Channel2 duty cycle = (TIM3_CCR2/ TIM3_ARR+1)* 100% = 37.5%
& & TIM3 Channel3 duty cycle = (TIM3_CCR3/ TIM3_ARR+1)* 100% = 25%
& & TIM3 Channel4 duty cycle = (TIM3_CCR4/ TIM3_ARR+1)* 100% = 12.5%
&&----------------------------------------------------------------------- */
&&TIM3的时间基数单位设置(如计数终止值:999,从0开始 ;计数方式:向上计数)& && && &
&&TIM_TimeBaseStructure.TIM_Period = 999;& && &
&&TIM_TimeBaseStructure.TIM_Prescaler = 0;& && && && &
&&TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;& && &&&
&&TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
&&TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
&&TIM3的外设的设置
&&TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;& && &&&//TIM脉冲宽度调制模式1& &
&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E//这个暂时不知道,stm32固件库里没有搜到。应该是定时器输出声明使能的意思& && &&&
&&TIM_OCInitStructure.TIM_Pulse = CCR1_V//设置了待装入捕获比较寄存器的脉冲值& && && &
&&TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_H //TIM输出比较极性高
&&TIM_OC1Init(TIM3, &TIM_OCInitStructure);
&&TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Enable);//使能或者失能TIMx在CCR1上的预装载寄存器
&&下面3路PWM输出和上面的一样不再解说
&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
&&TIM_OCInitStructure.TIM_Pulse = CCR2_V& && && &
&&TIM_OC2Init(TIM3, &TIM_OCInitStructure);& && && &
&&TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);
&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
&&TIM_OCInitStructure.TIM_Pulse = CCR3_V& && &&&
&&TIM_OC3Init(TIM3, &TIM_OCInitStructure);& && && &
&&TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Enable);
&&TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_E
&&TIM_OCInitStructure.TIM_Pulse = CCR4_V& && &&&
&&TIM_OC4Init(TIM3, &TIM_OCInitStructure);& && &&&
&&TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Enable);
&&TIM_ARRPreloadConfig(TIM3, ENABLE);& && &&&//使能TIM3重载寄存器ARR& && && && && &
&&TIM_Cmd(TIM3, ENABLE);//使能TIM3& && && && &&&
太累了边看边写都这个点了日0:24:13在自己床上写的。下面是看看我们程序达到的4路PWM的效果:
4.jpg (84.64 KB, 下载次数: 37)
00:20 上传
可以看到明显占空比不同的4路pwm波。
这一节终于讲完,个人觉得敲一遍代码学起来还是蛮容易懂的。希望看到的人也能搞懂。
最后补充一点pwm具体能干什么?&&特别是对广大电子DIY爱好者的应用:
智能小车的电机控制:我们可以利用pwm来控制我们的智能小车的车速;
机器人:给“机器人关节”舵机周期一定(我以前玩过具体多少毫秒忘记了)pwm波就可以控制舵机的转动角度了;
呼吸灯:输入不同的pwm波就可以达到明暗渐明渐暗的效果。
还有别的应用大家一起发挥想象力给予补充。我们可以一起交流,希望大家支持。
刚刚学习STM32,共勉
凑个热闹,看不懂,不过感兴趣
大神是怎么学会51单片机,学习方法牛逼,佩服
王栋春 发表于
凑个热闹,看不懂,不过感兴趣
花点时间,应该看得懂。很人性化的东西。
酷爱diy 发表于
大神是怎么学会51单片机,学习方法牛逼,佩服
刚上大学空余时间看到机器人感兴趣,就认识了微型计算机。从51这种基础的8位微机开始学的,不懂就去百度。买书看看。我一般学一款微机都不会去买单片机学习板,其实买个微机的最小系统就够了。一般都不会超过50,只能建议怎么多了。
那么你的方法除了百度与看书最重要的是怎么学习的,我学的头大了
酷爱diy 发表于
那么你的方法除了百度与看书最重要的是怎么学习的,我学的头大了
理解很重要。就和解数学题一样,思路要理清。最好看别人的教学视频,然后自己理解消化,拿去应用举一反三。就可以了。
你是怎样组织代码的???根据参考手册将一个个函数调用起来么???我是学正点原子的开发板,但是我只是大概了解一下外设的结构,简介。还有就是照着书把代码抄进去而已,感觉达不到更好效果。
电子DIY嘿皮 发表于
你是怎样组织代码的???根据参考手册将一个个函数调用起来么???我是学正点原子的开发板,但是我只是大 ...
是效果没出来,还是什么?&&我也学了好几天才用的很自然。重点在于理解,才能去用,
Copyright &
Powered by怎么学习PWM技术?对学习者有哪些要求?比如要先学什么课程?PWM技术和学习单片机联系大不大?_百度知道
怎么学习PWM技术?对学习者有哪些要求?比如要先学什么课程?PWM技术和学习单片机联系大不大?
不要在网上用剪刀加胶水,要知道的人自己总结的经验。
提问者采纳
单片机应用?掌心数字电路,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、模拟电路。PWM技术和学习单片机联系大不大:特别是逻辑门电路。2。学什么课程,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。3:(Pulse Width Modulation)。通过高分辨率计数器的使用、CMOS电路、通信到功率控制与变换的许多领域中,PWM技术:脉宽调制(PWM,可以调整占空比和输入频率1,因为PWM可以由单片机输出控制?肯定联系大的、C51编程,PWM是一种对模拟信号电平进行数字编码的方法,PWM技术
其他类似问题
为您推荐:
单片机的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁这是一个pwm 学习后的感悟_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
这是一个pwm 学习后的感悟
上传于||文档简介
&&P​W​M​ ​学​习​感​悟
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
你可能喜欢}

我要回帖

更多关于 大学生应读的100本书 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信