[ZLG-MCU] SPI测试不能进入中断为什么?

[复制链接]
2029|0
 楼主| gwsino 发表于 2008-4-30 16:20 | 显示全部楼层 |阅读模式
spi, ev, dc, TI, se
SPI中断进入不了。不知道是为什么啊<br />#include&nbsp;&quot;sys/device.h&quot;<br />#include&nbsp;&quot;stdlib.h&quot;<br />#include&nbsp;&quot;config.h&quot;<br />#include&nbsp;&quot;spi.h&quot;<br />#include&nbsp;&quot;string.h&quot;<br />#include&nbsp;&quot;stdio.h&quot;<br />#include&nbsp;&quot;sys/irqreg.h&quot;<br /><br />extern&nbsp;void&nbsp;SpiInterrupt(void);<br /><br />NUTDEVICE&nbsp;*curdev;//当前操作的设备指针信息<br /><br />int&nbsp;SpiArmInput(NUTDEVICE&nbsp;*dev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs;<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;&nbsp;&nbsp;dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;&nbsp;&nbsp;&nbsp;devnum;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT32U&nbsp;*ret=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;err;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;devnum&nbsp;=&nbsp;dev-&gtdev_base;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs&nbsp;=&nbsp;dev-&gtdev_icb;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(ifs-&gtif_rd_idx&nbsp;==&nbsp;ifs-&gtif_rx_idx)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(devnum)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PDR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PDR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ret&nbsp;=&nbsp;(INT32U*)OSMboxPend(dcb-&gtSPIReviceMbox,20,&err);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}while((ifs-&gtif_rd_idx&nbsp;==&nbsp;ifs-&gtif_rx_idx)||(err&nbsp;==&nbsp;OS_TIMEOUT));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(int)ret;<br />}<br /><br />int&nbsp;SpiArmOutput(NUTDEVICE&nbsp;*dev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs&nbsp;=&nbsp;dev-&gtdev_icb;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(ifs-&gtif_tx_idx&nbsp;==&nbsp;ifs-&gtif_wr_idx)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PDR&nbsp;=&nbsp;ifs-&gtif_tx_buf[ifs-&gtif_tx_idx];<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PDR&nbsp;=&nbsp;ifs-&gtif_tx_buf[ifs-&gtif_tx_idx];<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_tx_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(!(S0PSR&nbsp;&&nbsp;0x80))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />void&nbsp;SPI_Exception(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;State;<br />&nbsp;&nbsp;&nbsp;&nbsp;SpiDCB&nbsp;*dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs&nbsp;=&nbsp;curdev-&gtdev_icb;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb&nbsp;=&nbsp;curdev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;State&nbsp;=&nbsp;S1PSR;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;OS_ENTER_CRITICAL();<br />&nbsp;&nbsp;&nbsp;&nbsp;if(State&0x80)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;switch(dcb-&gtWorkProcess)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;IsReading:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ifs-&gtif_rd_idx&nbsp;==&nbsp;ifs-&gtif_rx_idx&nbsp;+&nbsp;1)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSMboxPost(dcb-&gtSPIReviceMbox,(void*)OS_READOVER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_rx_buf[ifs-&gtif_rx_idx]&nbsp;=&nbsp;S0PDR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_rx_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtrdsize--;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dcb-&gtrdsize&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSMboxPost(dcb-&gtSPIReviceMbox,(void*)OS_READOVER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(curdev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PDR&nbsp;=&nbsp;0x00;//继续产生读取时钟进行数据的读取操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PDR&nbsp;=&nbsp;0x00;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;IsWriting:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ifs-&gtif_wr_idx&nbsp;==&nbsp;ifs-&gtif_tx_idx)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSMboxPost(dcb-&gtSPIReviceMbox,(void*)OS_SENDOVER);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(curdev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PDR&nbsp;=&nbsp;ifs-&gtif_tx_buf[ifs-&gtif_tx_idx];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_tx_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PDR&nbsp;=&nbsp;ifs-&gtif_tx_buf[ifs-&gtif_tx_idx];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_tx_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;S0PINT&nbsp;=&nbsp;0x01;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr&nbsp;=&nbsp;0x00000000;<br />&nbsp;&nbsp;&nbsp;&nbsp;OS_EXIT_CRITICAL();<br />}<br />int&nbsp;SpiFlush(NUTDEVICE&nbsp;*dev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorkProcess&nbsp;=&nbsp;IsWriting;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;(*dcb-&gtEnable)();//使能操作芯片<br />&nbsp;&nbsp;&nbsp;&nbsp;if(SpiArmOutput(dev))<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*dcb-&gtDisable)();//暂停芯片操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;595&nbsp;Write&nbsp;over\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;if((int)OSMboxPend(dcb-&gtSPIReviceMbox,OS_TICKS_PER_SEC*2,NULL)&nbsp;==&nbsp;OS_SENDOVER)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*dcb-&gtDisable)();//暂停芯片操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;(*dcb-&gtDisable)();//暂停芯片操作<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;<br />}<br />int&nbsp;SPI_Init(NUTDEVICE&nbsp;*dev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorkProcess&nbsp;=&nbsp;IsIdle;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xFFFFC0FF)&nbsp;|&nbsp;0x1500;&nbsp;&nbsp;/*&nbsp;选择管脚为SPI&nbsp;*/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />int&nbsp;SPI_Close(NUTFILE&nbsp;*fp)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;NUTDEVICE&nbsp;*dev&nbsp;=&nbsp;fp-&gtnf_dev;<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(dcb-&gtSPIReviceMbox)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSMboxDel(dcb-&gtSPIReviceMbox,OS_DEL_ALWAYS,NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;free(fp);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorking&nbsp;=&nbsp;IsFree;<br />&nbsp;&nbsp;&nbsp;&nbsp;curdev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;0x0000;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />NUTFILE*&nbsp;SPI_Open(NUTDEVICE&nbsp;*dev,const&nbsp;char&nbsp;*name,int&nbsp;mode,int&nbsp;acc)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;NUTFILE&nbsp;*fp&nbsp;=&nbsp;(NUTFILE*)malloc(sizeof(NUTFILE));<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;&nbsp;state;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;fp-&gtnf_next&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;fp-&gtnf_dev&nbsp;=&nbsp;dev;<br />&nbsp;&nbsp;&nbsp;&nbsp;fp-&gtnf_fcb&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;curdev&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;dev;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(dcb-&gtWorking&nbsp;==&nbsp;IsUsed)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSTimeDly(10);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorking&nbsp;=&nbsp;IsUsed;//打开此设备时将会占用此功能<br />&nbsp;&nbsp;&nbsp;&nbsp;if(dcb-&gtSPIReviceMbox&nbsp;==&nbsp;(OS_EVENT*)0)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtSPIReviceMbox&nbsp;=&nbsp;OSMboxCreate(NULL);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSMboxAccept(dcb-&gtSPIReviceMbox);//清除当前消息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;=&nbsp;S1PSR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Fpclk/dcb-&gtbaudrate&nbsp;&gt&nbsp;8)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PCCR&nbsp;=&nbsp;Fpclk/dcb-&gtbaudrate;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PCCR&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//模式设置操作<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PCR&nbsp;&nbsp;=&nbsp;dcb-&gtWorkMode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;=&nbsp;S0PSR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Fpclk/dcb-&gtbaudrate&nbsp;&gt&nbsp;8)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PCCR&nbsp;=&nbsp;Fpclk/dcb-&gtbaudrate;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PCCR&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PCR&nbsp;&nbsp;=&nbsp;dcb-&gtWorkMode;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectAddr7&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(unsigned&nbsp;long)SpiInterrupt;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICVectCntl7&nbsp;=&nbsp;0x20+0x0A;<br />&nbsp;&nbsp;&nbsp;&nbsp;VICIntEnable&nbsp;|=&nbsp;(1&lt&lt7);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />//&nbsp;&nbsp;&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;(PINSEL1&nbsp;&&nbsp;0XFFFFFF03)|0X000000A8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NutIrqRegister(SpiInterrupt,dev-&gtdev_irq,11);<br />//&nbsp;&nbsp;&nbsp;&nbsp;}<br />//&nbsp;&nbsp;&nbsp;&nbsp;else<br />//&nbsp;&nbsp;&nbsp;&nbsp;{<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xFFFF00FF)&nbsp;|&nbsp;0x00001500;&nbsp;//&nbsp;/*&nbsp;选择管脚为SPI*/&nbsp;<br />//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NutIrqRegister(SpiInterrupt,dev-&gtdev_irq,10);<br />//&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;fp;<br />}<br /><br />int&nbsp;SPI_Write(NUTFILE&nbsp;*fp,const&nbsp;void&nbsp;*buffer,int&nbsp;size)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;NUTDEVICE&nbsp;*dev&nbsp;=&nbsp;fp-&gtnf_dev;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs&nbsp;=&nbsp;dev-&gtdev_icb;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;*pc&nbsp;=&nbsp;(INT8U*)buffer;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(buffer&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*ifs-&gtif_flush)(dev);<br />&nbsp;&nbsp;&nbsp;&nbsp;while(size--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ifs-&gtif_tx_idx&nbsp;==&nbsp;(ifs-&gtif_wr_idx+1))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(*ifs-&gtif_flush)(dev);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_tx_buf[ifs-&gtif_wr_idx]&nbsp;=&nbsp;*pc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pc++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_wr_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;(*ifs-&gtif_flush)(dev);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br /><br />int&nbsp;SPI_Read(NUTFILE&nbsp;*fp,void&nbsp;*buffer,int&nbsp;size)<br />{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;NUTDEVICE&nbsp;*dev&nbsp;=&nbsp;fp-&gtnf_dev;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs&nbsp;=&nbsp;dev-&gtdev_icb;<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;*Pointer&nbsp;=&nbsp;(INT8U*)buffer;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT8U&nbsp;rc&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtrdsize&nbsp;=&nbsp;size;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorkProcess&nbsp;=&nbsp;IsReading;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;if(size&nbsp;==&nbsp;0)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;-1;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;(*ifs-&gtif_input)(dev);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(size--)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((ifs-&gtif_rd_idx&nbsp;==&nbsp;ifs-&gtif_rx_idx)&&rc)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*Pointer&nbsp;=&nbsp;ifs-&gtif_rx_buf[ifs-&gtif_rd_idx];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_rd_idx++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pointer++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rc++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;rc;<br />}<br />//获得端口的状态信息<br />int&nbsp;GetStatus(NUTDEVICE&nbsp;*dev,INT8U&nbsp;*status)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br /><br />int&nbsp;SPI_Control(NUTDEVICE&nbsp;*dev,int&nbsp;req,void&nbsp;*conf)<br />{<br />//&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT32U&nbsp;&nbsp;&nbsp;&nbsp;*lv&nbsp;&nbsp;=(INT32U*)conf;<br />&nbsp;&nbsp;&nbsp;&nbsp;INT32U&nbsp;&nbsp;longV=&nbsp;*lv;<br />//&nbsp;&nbsp;&nbsp;&nbsp;INT16U&nbsp;&nbsp;sv&nbsp;&nbsp;&nbsp;=&nbsp;(INT16U)longV;<br />&nbsp;&nbsp;&nbsp;&nbsp;//INT8U&nbsp;&nbsp;&nbsp;bv&nbsp;&nbsp;&nbsp;=&nbsp;(INT8U)sv;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(req)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;SPI_SETSPEED:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Fpclk/longV&nbsp;&gt&nbsp;8)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PCCR&nbsp;=&nbsp;Fpclk/longV;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S1PCCR&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(Fpclk/longV&nbsp;&gt&nbsp;8)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PCCR&nbsp;=&nbsp;Fpclk/longV;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S0PCCR&nbsp;=&nbsp;8;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />}<br />/*******************************************************************<br />&nbsp;&nbsp;&nbsp;&nbsp;由于不同的设备的操作可能会出现不一样的配置要求,故在设计初始化<br />&nbsp;&nbsp;&nbsp;&nbsp;时进行分开设计的理念这样可以实现不同的设备间的求同存异的目标<br />&nbsp;&nbsp;&nbsp;&nbsp;以下的内容为595专用模块区<br />&nbsp;******************************************************************/<br /><br />void&nbsp;HC595Enable(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;PINSEL0&nbsp;&&nbsp;0XFFFCFFFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;&nbsp;=&nbsp;IO0DIR&nbsp;|&nbsp;(1&lt&lt8);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0CLR&nbsp;&nbsp;|=&nbsp;(1&lt&lt8);<br />}<br />void&nbsp;HC595Disable(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;PINSEL0&nbsp;&&nbsp;0XFFFCFFFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0DIR&nbsp;&nbsp;=&nbsp;IO0DIR&nbsp;|&nbsp;(1&lt&lt8);<br />&nbsp;&nbsp;&nbsp;&nbsp;IO0SET&nbsp;&nbsp;|=&nbsp;(1&lt&lt8);<br /><br />}<br /><br />int&nbsp;HC595_Init(NUTDEVICE&nbsp;*dev)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;pSpiDCB&nbsp;dcb&nbsp;=&nbsp;dev-&gtdev_dcb;<br />&nbsp;&nbsp;&nbsp;&nbsp;IFSTREAM&nbsp;*ifs&nbsp;=&nbsp;dev-&gtdev_icb;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;if(dev-&gtdev_base)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL1&nbsp;=&nbsp;(PINSEL1&nbsp;&&nbsp;0XFFFFFF03)|0X000000A8;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;NutIrqRegister(SpiInterrupt,dev-&gtdev_irq,11);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PINSEL0&nbsp;=&nbsp;(PINSEL0&nbsp;&&nbsp;0xFFFF00FF)&nbsp;|&nbsp;0x00005500;&nbsp;//&nbsp;/*&nbsp;选择管脚为SPI*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;NutIrqRegister(SpiInterrupt,dev-&gtdev_irq,10);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;if(dcb)<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(dcb,0,sizeof(SpiDCB));<br />&nbsp;&nbsp;&nbsp;if(ifs)<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(ifs,0,sizeof(IFSTREAM));&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorkMode&nbsp;=&nbsp;(1&lt&ltMSTR)|(1&lt&ltCPHA)|(1&lt&ltSPIE);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtWorkProcess&nbsp;=&nbsp;IsIdle;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtbaudrate&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;400000;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtEnable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;HC595Enable;<br />&nbsp;&nbsp;&nbsp;&nbsp;dcb-&gtDisable&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;HC595Disable;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_rx_idx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_tx_idx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_wr_idx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_rd_idx&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_input&nbsp;&nbsp;=&nbsp;SpiArmInput;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_output&nbsp;=&nbsp;SpiArmOutput;<br />&nbsp;&nbsp;&nbsp;&nbsp;ifs-&gtif_flush&nbsp;&nbsp;=&nbsp;SpiFlush;<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;595Initilation\n&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;<br />}<br />SpiDCB&nbsp;dcb595;<br />IFSTREAM&nbsp;ifs595;<br /><br />NUTDEVICE&nbsp;dev595=<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;0,<br />&nbsp;&nbsp;&nbsp;&nbsp;{'l','s','5','9','5',0,0,0,0},<br />&nbsp;&nbsp;&nbsp;&nbsp;IFTYP_CHAR,<br />&nbsp;&nbsp;&nbsp;&nbsp;0,<br />&nbsp;&nbsp;&nbsp;&nbsp;OS_SPI0_PRIO,<br />&nbsp;&nbsp;&nbsp;&nbsp;&ifs595,<br />&nbsp;&nbsp;&nbsp;&nbsp;&dcb595,<br />&nbsp;&nbsp;&nbsp;&nbsp;HC595_Init,<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_Control,<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_Read,<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_Write,<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_Open,<br />&nbsp;&nbsp;&nbsp;&nbsp;SPI_Close,<br />&nbsp;&nbsp;&nbsp;&nbsp;NULL&nbsp;&nbsp;&nbsp;&nbsp;<br />};
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

73

帖子

1

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