完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用定时器2的通道1的PWM功能,但不产生CH1的实际输出。而是在定时器2的更新回调函数和比较回调函数里分别置高/置低指定的GPIO引脚。
后来发现,有can接收中断时,输出的pwm波形有断续,造成外接的无源蜂鸣器响声断续。 想把定时器2的抢占中断优先级调到最高,但又担心影响can数据接收。 有没有办法通过DMA方式在任意GPIO引脚产生PWM波? |
|
相关推荐
2个回答
|
|
定时器输出PWM不会被中断打断才对,看你的描述你这个算是模拟的PWM,不是硬件PWM,再检查一下配置
|
|
|
|
通过DMA方式在任意GPIO引脚产生PWM波的步骤如下:
1. 初始化定时器2的PWM功能,设置重载寄存器的值、预分频器的值和比较寄存器的值。 2. 初始化DMA,选择合适的数据传输方向和数据长度。 3. 配置DMA的触发源为定时器2的更新事件,并启动DMA传输。 4. 在定时器2的更新回调函数和比较回调函数中,通过设置GPIO引脚的高低电平来产生PWM波。 要注意的是,为了避免产生断续的PWM波形,可以选择合适的DMA传输大小和触发方式,以确保DMA能够及时传输数据。 另外,关于中断优先级的问题,可以根据具体应用场景来确定。如果CAN数据接收的实时性比较重要,可以将CAN中断的优先级设置为最高;如果PWM波形的稳定性和准确性比较重要,可以将定时器2的抢占中断优先级设置为最高。 总结来说,通过DMA方式在任意GPIO引脚产生PWM波形需要初始化定时器和DMA,并根据具体场景选择合适的配置和中断优先级来实现。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1618 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1545 浏览 1 评论
979 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
683 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1597 浏览 2 评论
1864浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
645浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
516浏览 3评论
532浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
505浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 17:18 , Processed in 0.755876 second(s), Total 82, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号