OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3646|回复: 9

如何在播放音频时进行通讯

[复制链接]

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
发表于 2020-9-25 14:23:48 | 显示全部楼层 |阅读模式
5金钱
最近在用STM32L4+WM8978做了一个音频项目,用的原子哥音频播放的裸机例程,加了RTC、PWM、ADC、485串口通讯等等功能,后期可能还需要上以太网通讯。现在碰到了一个问题,就是现在音频播放的函数audio_play()是放在while循环里的,结果导致只要跳进音频播放函数(一首歌动辄几分钟),在音频播放的时候,其他功能都没法用了。特别是无法进行通讯获取时间和AD采样的数据,上位机也没法控制,而且一个while循环时间太长,喂狗都没法喂了,这个有办法解决么。。。

最佳答案

查看完整内容[请看2#楼]

我们综合实验就支持,你播放mp3,退出音乐界面,音乐还是在播放的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-9-25 14:23:49 | 显示全部楼层
dd22086 发表于 2020-9-26 10:17
有带音频的综合例程可以参考下么

我们综合实验就支持,你播放mp3,退出音乐界面,音乐还是在播放的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-9-26 01:31:02 | 显示全部楼层
用OS。。。
回复

使用道具 举报

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
 楼主| 发表于 2020-9-26 10:13:03 | 显示全部楼层
有带音频的综合例程可以参考下么
回复

使用道具 举报

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
 楼主| 发表于 2020-9-26 10:17:15 | 显示全部楼层

有带音频的综合例程可以参考下么
回复

使用道具 举报

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
 楼主| 发表于 2020-9-27 08:12:00 | 显示全部楼层
正点原子 发表于 2020-9-27 01:57
我们综合实验就支持,你播放mp3,退出音乐界面,音乐还是在播放的

好的,找到啦,谢谢
回复

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4042
金钱
4042
注册时间
2017-11-15
在线时间
329 小时
发表于 2020-9-27 09:03:40 | 显示全部楼层
说一下个人理解和操作,通过两个BUFF+DMA和DMA中断。开始播放后BUFF1开始给DMA,读数据缓存到BUFF2;当产生DMA中断,把BUFF2给DMA,读数据缓存到BUFF1。
www.littlebutler.top
回复

使用道具 举报

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
 楼主| 发表于 2020-9-27 16:08:37 | 显示全部楼层
IdeaMing 发表于 2020-9-27 09:03
说一下个人理解和操作,通过两个BUFF+DMA和DMA中断。开始播放后BUFF1开始给DMA,读数据缓存到BUFF2;当产生D ...

原理上是没问题,但是裸机代码实现上感觉有困难,因为要把整个音频传输的函数拆成好几个节点,然后把节点扔进while循环里。。。。不然播放音乐的时候其他功能还是没法用。
回复

使用道具 举报

4

主题

116

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4042
金钱
4042
注册时间
2017-11-15
在线时间
329 小时
发表于 2020-9-28 09:06:32 | 显示全部楼层
dd22086 发表于 2020-9-27 16:08
原理上是没问题,但是裸机代码实现上感觉有困难,因为要把整个音频传输的函数拆成好几个节点,然后把节点 ...

并不复杂,因为是DMA和中断做事情,其它的时候你该干嘛干嘛。
www.littlebutler.top
回复

使用道具 举报

13

主题

36

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
443
金钱
443
注册时间
2020-7-16
在线时间
85 小时
 楼主| 发表于 2020-9-28 09:26:23 | 显示全部楼层
IdeaMing 发表于 2020-9-28 09:06
并不复杂,因为是DMA和中断做事情,其它的时候你该干嘛干嘛。

好的, 多谢多谢,我试一下~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-16 21:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表