我是对照数据手册写的;可是我用示波器测SPCK和MOSI脚都无输出??<br />哪位好心的给看看??<br /><br />int main(void)<br />{<br /> *AT91C_PMC_SCER = 0x00000001; //处理器时钟使能。<br /> *AT91C_PMC_PCER = (1<<AT91C_ID_SPI); //SPI时钟使能。<br /> *AT91C_PIOA_ASR=<br /> ((unsigned int) AT91C_PA11_NPCS0 ) |<br /> ((unsigned int) AT91C_PA12_MISO ) |<br /> ((unsigned int) AT91C_PA13_MOSI ) |<br /> ((unsigned int) AT91C_PA14_SPCK ); <br /> //相应管脚设置为设备A<br /> * AT91C_PIOA_PDR=<br /> ((unsigned int) AT91C_PA11_NPCS0 ) |<br /> ((unsigned int) AT91C_PA12_MISO ) |<br /> ((unsigned int) AT91C_PA13_MOSI ) |<br /> ((unsigned int) AT91C_PA14_SPCK );<br /> //相应管脚设置为设备模式<br /><br /><br /> *AT91C_SPI_CR = AT91C_SPI_SWRST; //复位SPI. <br /> *AT91C_SPI_MR = AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS | 0xE0000 |(0<<3);<br /> //模式寄存器设置:主机模式|固定外设|错误检测模式禁用|片选0|时钟为MCK<br /> *AT91C_SPI_IDR = 0; //中断禁止。<br /> *AT91C_SPI_CR = AT91C_SPI_SPIEN; //使能SPI.<br /> while (1)<br /> {<br /> *AT91C_SPI_TDR = 0x0000a0f0;<br /> while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TDRE)){;}<br /> }<br />} |
|