This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
工具/软件:Code Composer Studio
我写两个函数来使用UART和SPI端口。 当他们在主函数中调用时,UART上的数据已损坏,否则它们工作正常(如果我一次使用任何一个)。
我使用GPIO89,GPIO90 (用于UART)和GPIO 58,GPIO60 (用于SPI)。
所以请帮我找出问题所在??
/************************************************************************ 工商局局长****************************************************************************************************** /
void init_serial_c (void)
{
GPIO_SetupPinMux (89,GPIO _MUX_CPU1,6);
GPIO设置PIN选项(89,GPIO输出,GPIO _异步);
GPIO_SetupPinMux (90,GPIO _MUX_CPU1,6);
GPIO设置引脚选项(90,GPIO输入,GPIO按钮);
EALLOW;//这是写入EALLOW保护寄存器所必需的
PieVectorTable.SCIC_RX_INT =&sciaRxFifoIsr;
// PieVectorTable.SCIC_TX_INT =&scicTxFifoIsr;
EDIS;//这是禁用写入EALLOW保护寄存器所必需的
INIT_SCIC_GPIO ();
EALLOW;
PieCtrlRegs.PIECTRL.bit.ENPIE =1;//启用PIE块
PieCtrlRegs.PIEIER8.bit.INTx5 =1;// PIE组9,INT1 Rx中断启用
//PieCtrlRegs.PIEIER8.bit.INTx6=1;// PIE组9,INT2 TX中断启用
scic_echoback_init();
scic_fifo_init();
IER || M_INT8;
//IER = 0x100;//启用CPU INT
//EINT;
EINT;
ERTM;
EDIS;
}
************************** /
void spi_fifo_init_net(void)
{
GPIO_SetupPinMux (2,GPIO _MUX_CPU1,0);
GPIO设置引脚选项(2,GPIO输出,GPIO推送);/Cs1
GPIO_SetupPinMux (3,GPIO _MUX_CPU1,0);
GPIO设置引脚选项(3,GPIO输出,GPIO推送);/CS2
GPIO_SetupPinMux (10,GPIO _MUX_CPU1,0);
GPIO设置引脚选项(10,GPIO输出,GPIO推送);//E
GPIO_SetupPinMux (2,GPIO _MUX_CPU1,0);
GPIO设置引脚选项(2,GPIO输出,GPIO推送);/Cs1
EALLOW;
gpioCtrlRegs.GPBPUD.bit.GPIO58 = 0;//在GPIO16上启用上拉(SPISIMOA)
gpioCtrlRegs.GPBPUD.bit.GPIO60 = 0;//在GPIO18上启用上拉(SPICLKA)
gpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3;//异步输入GPIO16 (SPISIMOA)
gpioCtrlRegs.GPBQSEL2.bit.GPIO60 = 3;//异步输入GPIO18 (SPICLKA)
gpioCtrlRegs.GPBGMUX2.bit.GPIO58 = 3;//将GPIO16配置为SPISIMOA
gpioCtrlRegs.GPBGMUX2.bit.GPIO60 = 3;//将GPIO18配置为SPICLKA
gpioCtrlRegs.GPBMUX2.bit.GPIO58 = 3;//将GPIO16配置为SPISIMOA
gpioCtrlRegs.GPBMUX2.bit.GPIO60 = 3;//将GPIO18配置为SPICLKA
SpiaRegs.SPIFFTX.Bit.TXFFINTCLR = 1;
SpiaRegs.SPIFFTX.Bit.SPIFFENA = 1;
SpiaRegs.SPIFFTX.Bit.TXFIFO = 0;//重置fifo指针
SpiaRegs.SPIFFTX.Bit.TXFIFO = 1;
SpiaRegs.SPIFFTX.Bit.TXFFIENA = 1;
SpiaRegs.SPIFFTX.Bit.TXFFIL = 0;
SpiaRegs.SPIFFTX.Bit.TXFIFO = 1;
SpiaRegs.SPIFFRX.Bit.RXFIFORESET=1;
//在更改配置之前将重置设置为低
//时钟极性(0 ==上升,1 ==下降)
// 16位字符
//启用环回--禁用环回模式
SpiaRegs.SPICCR.bit.SPISWRESET =0;
SpiaRegs.SPICCR.bit.CLKPOLARITY = 1;
SpiaRegs.SPICTL.bit.CLK_PHASE =0;//带延迟的上升边
SpiaRegs.SPICCR.bit.SPICHAR =(8-1);//(12-1);//7
SpiaRegs.SPICCR.Bit.SPILBK = 0;
//启用主中继器(0 ==从中继器,1 ==主中继器)
//启用传输(Talk)
//时钟相位(0 ==正常,1 ==延迟)
//启用SPI中断
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;
SpiaRegs.SPICTL.bit.Talk =1;
SpiaRegs.SPICTL.bit.CLK_PHASE =0;
SpiaRegs.SPICTL.bit.SPIINTENA = 1;
//设置波特率
ClkCfgRegs.LOSPPCN.bit.LSPCLKDIV = 0x04;//7
SpiaRegs.SPIBRR.Bit.SPI_bit_rate = 75;//125
SpiaRegs.SPIPRI.Bit.free = 0;
//CLKCFGRegs.LOSPPCP.bit.LSPCLKDIV=0x03;
//从重置中释放SPI
SpiaRegs.SPICCR.bit.SPISWRESET = 1;
//PieCtrlRegs.PIEIER6.bit.INTx2 = 1;//启用PIE组6,INT 2
//IER=M_INT6;//启用CPU INT6
//PieVectorTable.SPIA_TX_INT =&spiAint;
// EDIS;
返回;
}