打印
[菜农助学交流]

音量控制程序-------第五批助学学习笔记

[复制链接]
2549|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gary2008|  楼主 | 2011-12-19 22:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
虽然第五批中第一个收到助学板,但一直没时间摆弄。近日终于抽空玩弄一下,写一音量控制小程序,以纪念开工之喜。望各位多多赐教。
直接看程序吧。下位机程序相当简单,直接在BSP上修改一下就可以完成。
先设置好时钟:
UNLOCKREG();
    SYSCLK->PWRCON.XTL12M_EN = 1;
接着串口设置:
DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, 0);
DrvGPIO_InitFunction(E_FUNC_UART0);
    param.u32BaudRate        = 115200;
    param.u8cDataBits        = DRVUART_DATABITS_8;
    param.u8cStopBits        = DRVUART_STOPBITS_1;
    param.u8cParity          = DRVUART_PARITY_NONE;
    param.u8cRxTriggerLevel  = DRVUART_FIFO_1BYTES;
    param.u8TimeOut          = 0;
    DrvUART_Open(UART_PORT0, &param);
DrvUART_Write(UART_PORT0, send, 2);
还有根据板子的引脚,设置中断:
DrvGPIO_EnableDebounce(E_GPB, 14);
DrvGPIO_EnableDebounce(E_GPB, 15);
DrvGPIO_InitFunction(E_FUNC_EXTINT0);
DrvGPIO_InitFunction(E_FUNC_EXTINT1);
DrvGPIO_EnableEINT0(E_IO_FALLING, E_MODE_EDGE, EINT0Callback);
DrvGPIO_EnableEINT1(E_IO_FALLING, E_MODE_EDGE, EINT1Callback);
最后是中断程序:
void EINT0Callback(void)
{
DrvUART_Write(UART_PORT0, &send[0], 1);
outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 2));
}
void EINT1Callback(void)
{
DrvUART_Write(UART_PORT0, &send[1], 1);
outpw((uint32_t)&GPIOA->DOUT, inpw((uint32_t)&GPIOA->PIN) ^ (1 << 3));
}
其中,uint8_t send[]={0x48,0x49};
终于完了,上面那些应该是无数人在助学学习笔记里面写过的吧,啰嗦了一下,真抱歉。
音量控制通过Mixer的相关API调用完成,具体操作请参考源代码。

VolCtrlM0.rar

861.09 KB

VolCtrl.rar

3.73 MB

相关帖子

沙发
mcs8098| | 2011-12-20 12:38 | 只看该作者
COOL:lol

使用特权

评论回复
板凳
zxcscm| | 2012-2-2 21:24 | 只看该作者
软件控制音量的原理是什么

使用特权

评论回复
地板
zxcscm| | 2012-2-2 21:24 | 只看该作者
软件控制音量的原理是什么

使用特权

评论回复
5
zxcscm| | 2012-2-2 21:25 | 只看该作者
软件控制音量的原理是什么

使用特权

评论回复
6
gary2008|  楼主 | 2012-2-19 12:29 | 只看该作者
5# zxcscm 微软有提供混音器的操作API,有兴趣可以了解下。

使用特权

评论回复
7
nxslhc| | 2012-3-31 22:56 | 只看该作者
羡慕哈

使用特权

评论回复
8
lwslws201| | 2012-4-1 13:29 | 只看该作者
不错~

使用特权

评论回复
9
yongjun_meng| | 2012-4-5 10:36 | 只看该作者
谢谢分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝