CubeMX F103使用PWM DMA配置可调PWM波 keil仿真显示

目录

配置的选择思路

实现PWM波的方法

方法一(使用普通IO口)

方法二(使用定时器)

优劣比较

为什么使用DMA

DMA优点

配合函数

具体配置操作

CubeMX生成代码

时钟RCC的配置

定时器的配置

DMA的配置

​编辑 

MDK仿真配置 

Debug页面配置

一点简单的代码编写

结果展示


配置的选择思路

实现PWM波的方法

方法一(使用普通IO口)

单片机初学者可能第一种想到如何输出PWM的方法就是直接拉高拉低电平进行配置

方法二(使用定时器)

稍微有使用定时器的同学,想到配置PWM可能就会想到这个方法

优劣比较

显然两种方法都可以得到我们想要的PWM波形,但是第一种显然更加地浪费CPU的资源,因为在使用延时的时候,单片机啥也干不了只能在那干等着,所以说最好还是采用定时器的方法。

为什么使用DMA

DMA优点

直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。

配合函数

同样的我们使用DMA也是为了节省单片机的资源,使得我们可以做更多的其他操作。但这里我们使用DMA配置PWM也是为了能够使用ST给我们提供的HAL库函数HAL_TIM_PWM_Start_DMA,这个函数非常方便帮助我们实现了PWM可调的波形

具体配置操作

CubeMX生成代码

最近开始使用CubeMX这个软件,发现这个软件实在是太好用了,极大地方便了开发者进行开发(#^.^#)。

时钟RCC的配置

 

当然你也可以按照你的思路来进行配置,这里只是我的一个配置过程。(*^▽^*) 

定时器的配置

DMA的配置

 

可以看到使用CubeMX配置真的是相当舒服啊,哐哐两下就把代码写完了^_^

MDK仿真配置 

由于我的开发板不在身边,无法对自己的想法进行验证。该这么办呢?嘿嘿嘿。MDK提供了强大的仿真功能,这样无需开发板也能验证我们的想法了呢。

Debug页面配置

 其实也很简单,吧以上的选项勾进去就可以了。

DARMSTM.DLL和TARMSTM.DLL

一点简单的代码编写

如果我们是要实现可调的PWM波我们就要不断给定时器传入对比值,这样才能够实现可调的PWM。

废话不多说 直接定义一个数组

然后启动函数 

 

完成了上面这些操作,那么恭喜你马上要来到令人激动的波形查看了 O(∩_∩)O

 首先进入debug界面 进行如上配置

然后新建一个波形

你可以像我一样配置

 

结果展示

 嘿嘿嘿 如果学会了就点个赞吧 ^_^

 

 

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值