📄 exp7.c
字号:
#include "excalibur.h"
void Button_ISR(int context);
void Switch_ISR(int context);
int m_LLine,m_RLine,m_LHeadPhone,m_RHeadPhone;
int main(void)
{
na_SPI0->np_spistatus=0; //清零标志位
na_SPI0->np_spicontrol=0; //禁止中断
na_SPI0->np_spislaveselect=0x0001; //选择SS_0
m_LLine=0x0017;
m_RLine=0x0217;
m_LHeadPhone=0x0479;
m_RHeadPhone=0x0679;
nr_spi_txchar(0x1e00,na_SPI0); //初始化寄存器Reset
nr_delay(1);
nr_spi_txchar(m_LLine,na_SPI0); //初始化寄存器Left Line
nr_delay(1);
nr_spi_txchar(m_RLine,na_SPI0); //初始化寄存器Right Line
nr_delay(1);
nr_spi_txchar(m_LHeadPhone,na_SPI0); //初始化寄存器Left Headphone
nr_delay(1);
nr_spi_txchar(m_RHeadPhone,na_SPI0); //初始化寄存器Right Headphone
nr_delay(1);
nr_spi_txchar(0x082a,na_SPI0); //初始化寄存器Analog Audio Path
nr_delay(1);
nr_spi_txchar(0x0a00,na_SPI0); //初始化寄存器Digital Audio Path
nr_delay(1);
nr_spi_txchar(0x0c0c,na_SPI0); //初始化寄存器Power Down
nr_delay(1);
nr_spi_txchar(0x0e01,na_SPI0); //初始化寄存器Digital Audio Interface
nr_delay(1);
nr_spi_txchar(0x1021,na_SPI0); //初始化寄存器Sample Rate
nr_delay(1);
nr_spi_txchar(0x1200,na_SPI0); //初始化寄存器Digital Interface Activation
nr_delay(1);
nr_installuserisr(na_PIO_Button_irq,Button_ISR,0); //分配中断服务子程序
na_PIO_Button->np_pioedgecapture=0; //清除中断标志
na_PIO_Button->np_piodirection=0;
na_PIO_Button->np_piointerruptmask=0xff; //允许中断
nr_installuserisr(na_PIO_Switch_irq,Switch_ISR,0); //分配中断服务子程序
na_PIO_Switch->np_pioedgecapture=0; //清除中断标志
na_PIO_Switch->np_piodirection=0;
na_PIO_Switch->np_piointerruptmask=0xff; //允许中断
while(1);
}
void Button_ISR(int context)
{
na_PIO_Button->np_pioedgecapture=0;
if(na_PIO_Button->np_piodata==0x7f && m_LLine<0x001f) //S1
m_LLine++;
else if(na_PIO_Button->np_piodata==0xf7 && m_LLine>0x0000) //S5
m_LLine--;
else if(na_PIO_Button->np_piodata==0xbf && m_RLine<0x021f) //S2
m_RLine++;
else if(na_PIO_Button->np_piodata==0xfb && m_RLine>0x0200) //S6
m_RLine--;
else if(na_PIO_Button->np_piodata==0xdf && m_LHeadPhone<0x047f)//S3
m_LHeadPhone++;
else if(na_PIO_Button->np_piodata==0xfd && m_LHeadPhone>0x0400)//S7
m_LHeadPhone--;
else if(na_PIO_Button->np_piodata==0xef && m_RHeadPhone<0x067f)//S4
m_RHeadPhone++;
else if(na_PIO_Button->np_piodata==0xfe && m_RHeadPhone>0x0600)//S8
m_RHeadPhone--;
nr_spi_txchar(m_LLine,na_SPI0); //初始化寄存器Left Line
nr_delay(1);
nr_spi_txchar(m_RLine,na_SPI0); //初始化寄存器Right Line
nr_delay(1);
nr_spi_txchar(m_LHeadPhone,na_SPI0); //初始化寄存器Left Headphone
nr_delay(1);
nr_spi_txchar(m_RHeadPhone,na_SPI0); //初始化寄存器Right Headphone
}
void Switch_ISR(int context)
{
na_PIO_Switch->np_pioedgecapture=0; //清除中断标志
if(na_PIO_Switch->np_piodata=0)
nr_spi_txchar(0x0808,na_SPI0); //麦克风静音
else
nr_spi_txchar(0x0828,na_SPI0); //打开麦克风
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -