[菜农助学交流] 音量控制程序-------第五批助学学习笔记

[复制链接]
 楼主| 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调用完成,具体操作请参考源代码。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
mcs8098 发表于 2011-12-20 12:38 | 显示全部楼层
COOL:lol
zxcscm 发表于 2012-2-2 21:24 | 显示全部楼层
软件控制音量的原理是什么
zxcscm 发表于 2012-2-2 21:24 | 显示全部楼层
软件控制音量的原理是什么
zxcscm 发表于 2012-2-2 21:25 | 显示全部楼层
软件控制音量的原理是什么
 楼主| gary2008 发表于 2012-2-19 12:29 | 显示全部楼层
5# zxcscm 微软有提供混音器的操作API,有兴趣可以了解下。
nxslhc 发表于 2012-3-31 22:56 | 显示全部楼层
羡慕哈
lwslws201 发表于 2012-4-1 13:29 | 显示全部楼层
不错~
yongjun_meng 发表于 2012-4-5 10:36 | 显示全部楼层
谢谢分享!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

8

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部