虽然第五批中第一个收到助学板,但一直没时间摆弄。近日终于抽空玩弄一下,写一音量控制小程序,以纪念开工之喜。望各位多多赐教。
直接看程序吧。下位机程序相当简单,直接在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, ¶m);
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调用完成,具体操作请参考源代码。 |