你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【狂欢三】STM32C031使用TIM定时器DMA方式实现PWM输出(二)

[复制链接]
STMWoodData 发布时间:2024-12-20 17:58

上期在TIM定时器上实现了PWM脉冲输出,本次就换成使用DMA方式实现PWM脉冲。通过DMA方式可以实现任意个不同占空比的脉冲。

下面是定时器的DMA设置。通过Add添加DMA,这里最多只能添加3路控制。这里是通过RAM内存设置的占空比数据发送到TIM的外设输出PWM占空比,所以传输内存到外设方向。

接着是内存地址自增,外设地址按半字宽度,内存地址随便BYTE,HALFWORD,或者WORD宽度都行,就是定义缓存的时候要匹配好字节宽度。这里内存使用BYTE宽度,定义的时候使用uint8_t buff[],这样可以节省内存。内存自增是按对齐的宽度增加地址的。

image.png

设置完成后生成代码。

接下来实现DMA方式发送增加代码:

uint8_t pwmch1[128]; 定义内存缓存

volatile uint8_t pwm_lock = 0; 定义DMA发送完成标识。

在TIM定时器DMA发送完成中回调函数中设置标志。

image.png

接下来在主函数中实现发送函数。在缓存中设置每个PWM脉冲的占空比需要的计数值,然后调用HAL_TIM_PWM_Start_DMA(&htim3,TIM_CHANNEL_1,(uint32_t *)pwmch1,128);

实现DMA发送。后面while(pwm_lock);为等待DMA发送完成。

image.png

接下来看看DMA发送的效果。可以看到捕捉的GPIO与预期的PWM占空比一致。

image.png

image.png

image.png

收藏 评论0 发布时间:2024-12-20 17:58

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版