广告

原创 STM32系列之四旋翼(一)PWM输出与PWM仿真

2017-8-9 14:34 1407 0 分类: MCU/ 嵌入式

四旋翼如果驱动电机,定时器的PWM输出定然是必不可少的,今天的内容是跟着小马哥的视频,完成高级定时器1的4路PWM输出和如何使用Keil自带的仿真功能检验输出的PWM波。

要使用定时器输出我们需要的PWM,就要会配置定时器。我们直接看高级定时器的功能框图,从框图上看定时器都需要哪些配置:

图中的红色箭头表示一条通道,我们配置好这条通道沿线的寄存器就能输出我们需要的波形了,这条通道上,我标注了三个区域:1、2、3,这三个区域就是需要配置的:

区域1:时钟源选择,我们通过RCC_APB2PeriphClockCmd()就可以选择内部时钟源作为定时器的时钟;

区域2:这里主要是设置时基,通过自动重装载寄存器(TIMx_ARR)、计数器寄存器(TIMx_CNT)、预分频器寄存器(TIMx_PSC)进行设置。对应库函数中的TIM_TimeBaseInit()函数,通过这个函数设置计数模式、预分频数、计数次数等,就可以得到我们想要的计时时间,比如我们要定时1s、1us,这个时间的长度就是通过在这个区域设置的,定时公式为:

T = (TIM_Period +1) X (TIM_Prescaler +1)/TIMxCLK ;

TIM_Period是计数次数,也就是自动重装载中的值,TIM_Prescaler是预分频系数,是预分频器中的值,TIMxCLK是时钟。

区域3:这个区域是输出比较通道的配置,包括输出比较的空闲模式、输出比较模式、极性、输出状态、捕获/比较寄存器等的设置,对应库函数的TIM_OCxInit()函数,其中捕获/比较寄存器是一个16位寄存器,装的是当前捕获/比较寄存器的值,通过设置这个值,我们就可以得到不同占空比的PWM。

另外,除了这些设置,我们还需要使能自动重装载寄存器ARR的预装载功能,失能捕获/比较寄存器CCR的预装载功能,对应的库函数为:

TIM_ARRPreloadConfig(TIM1, ENABLE);

TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

失能CCR的预装载功能后,写入的值会立即传到捕获/比较寄存器,不用等到更新事件的发生。

其他的配置就不介绍了,大家可以参考官方例程。

配置好定时器后,我们怎样知道,到底有没有PWM输出呢,检测方法有好几种,视频中介绍的是利用Keil自带的仿真功能,下面我们就说说,这个仿真功能怎么使用:

步骤:

第一步:配置好定时器,运行程序,并且没有错误;

第二步:点击工具栏的“Options for target”,选择Debug选项卡,进行如下设置:

第三步:点击工具栏的“Start/Stop Debug”快捷键,然后点击“Setup”,进入下面的界面,点击红框表示的位置,添加仿真通道:

需要添加四次,即添加四个通道,因为我们有四路输出,添加通道的名称分别为:PORTA.8、PORTA.9、PORTA.10、PORTA.11,我们TIM1的四个输出通道是GPIO_8,GPIO_9,GPIO_10,GPIO_11,通道添加好后,点Close;

第四步:此时,已经有四个通道了,我们需要设置输出通道为数字输出,方法是:鼠标右键点击下图红框所示位置,选择bit即可,每一路都要设置;

第五步:点击工具栏的“Run”,启动仿真,就看到有四路输出了,神不神奇?

今天的内容到这里就结束了,真是收获满满呀……

如果有写的不合适的地方,还请大家多多指教。如果你有兴趣,也可以一起互相学习,共同进步。 (微信号 :c18093458455)

广告

文章评论 0条评论)

登录后参与讨论
相关推荐阅读
《源》 2017-08-29 15:09
STM32系列之四旋翼(五) 官方DMP库的移植
MPU6050的陀螺仪和加速度计的寄存器数据可以传输到MPU6050的数字运动处理器(DMP),经过DMP的融合处理就可以得到四元数,再用几个公式把四元数转换一下,就可以得到四旋翼的姿态角了。应美盛官...
《源》 2017-08-24 23:52
STM32系列之四旋翼(四) MPU6050知识点梳理
相关内容:1)MPU6050的简介2)MPU6050的封装3)MPU6050的陀螺仪、加速度计、磁力计介绍4)自检(Self Test)5)系统结构图6)姿态角7)如何得到姿态角8)MPU6050与单...
《源》 2017-08-23 23:25
STM32学习之路(四十二)怎样把PCB文件下单给工厂
我们可以选择任意的工厂来给我们加工电路板,今天以立创商城为例,介绍把PCB文件下单给工厂的整个过程。步骤如下:第一步:在浏览器的地址栏输入嘉立创的网址:http://www.sz-jlc.com ;第...
《源》 2017-08-23 23:21
STM32学习之路(四十一)Gerber文件的生成与查看
当我们要加工我们设计好的PCB时 ,需要将PCB文件转换为Gerber文件,然后将Gerber文件交付给工厂,导入CAM软件,来为每一道PCB工艺流程提供数据,进行加工。Gerber文件是线路板行业软...
《源》 2017-08-22 23:27
STM32学习之路(四十)给PCB添加Logo和注释
今天我们学习如何给PCB板添加开窗效果的Logo,以及给PCB添加注释。1、给PCB添加Logo由于KiCad还不支持添加中文文字,所以需要借助其它的工具来进行设计。下面我们开始设计:第一步:打开电脑...
《源》 2017-08-22 23:24
STM32学习之路(三十九) PCB覆铜
现在我们开始给电路板覆铜,所谓覆铜,就是将PCB上闲置的空间作为基准面,然后用固体铜填充,这些铜区又称为灌铜。覆铜的意义在于,减小地线阻抗,提高抗干扰能力;降低压降,提高电源效率;还有,与地线相连,减...
我要评论
0
0
广告
关闭 热点推荐上一条 /2 下一条