| 时钟初始化 PIN初始化,没有使用PC2(MISO)    /* Select HCLK as the clock source of SPI0 */
    CLK_SetModuleClock(SPI0_MODULE, CLK_CLKSEL1_SPI0_S_HCLK, MODULE_NoMsk);
    /* Enable SPI0 peripheral clock */
    CLK_EnableModuleClock(SPI0_MODULE);
 SPI0配置/* Setup SPI0 multi-function pins */
    SYS->GPC_MFP &= ~(SYS_GPC_MFP_PC0_Msk | SYS_GPC_MFP_PC1_Msk | SYS_GPC_MFP_PC3_Msk);        // SYS_GPC_MFP_PC2_Msk
    SYS->GPC_MFP |= SYS_GPC_MFP_PC0_SPI0_SS0 | SYS_GPC_MFP_PC1_SPI0_CLK | SYS_GPC_MFP_PC3_SPI0_MOSI0;        // SYS_GPC_MFP_PC2_SPI0_MISO0
    SYS->ALT_MFP &= ~(SYS_ALT_MFP_PC0_Msk | SYS_ALT_MFP_PC1_Msk | SYS_ALT_MFP_PC3_Msk);        // SYS_ALT_MFP_PC2_Msk
    SYS->ALT_MFP |= SYS_ALT_MFP_PC0_SPI0_SS0 | SYS_ALT_MFP_PC1_SPI0_CLK | SYS_ALT_MFP_PC3_SPI0_MOSI0;        // SYS_ALT_MFP_PC2_SPI0_MISO0
 OLED读写void SPI0_Init(void)
{
        SPI_Open(SPI0, SPI_MASTER, SPI_MODE_0, 0, 9000000);
        SPI_EnableAutoSS(SPI0, SPI_SS0, SPI_SS_ACTIVE_LOW);
}
 main函数#ifdef SOFT_SPI
void OLED_WR_Byte(u8 dat,u8 cmd)
{
        u8 i;
        if(cmd)
          OLED_DC_Set();
        else
          OLED_DC_Clr();
        OLED_CS_Clr();
        for(i = 0; i < 8; i++)
        {
                OLED_SCL_Clr();
                if(dat & 0x80)
                   OLED_SDA_Set();
                else
                   OLED_SDA_Clr();
                OLED_SCL_Set();
                dat <<= 1;
        }
        OLED_CS_Set();
        OLED_DC_Set();
}
#else
void OLED_WR_Byte(u8 dat, u8 cmd)
{
        if(cmd)
          OLED_DC_Set();
        else
          OLED_DC_Clr();
        SPI_WRITE_TX0(SPI0, dat);
        OLED_DC_Set();
}
#endif
 #ifdef SOFT_SPI
    SPI0_Init_Soft();
#else
    SPI0_Init();
#endif
        delay_ms(100);
        OLED_Init();
UART_SetTimeoutCnt(UART0, 40);
        UART0->FCR |= (3 << 4);                // 设置UART0的串口FIFO为14字节
        UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_RTO_IEN_Msk));
    printf("\n\nCPU [url=home.php?mod=space&uid=72445]@[/url] %dHz\n", SystemCoreClock);
    printf("\n\nUART Sample Program\n");
        t1.IDString = (uint8_t*)"LCC1 V0.0.1";
        printf("please input data:\n");
        delay_ms(500);
        AD5764_Init();
        while(1)
    {
                OLED_Refresh();
        OLED_ShowString(0, 1, t1.IDString, 16, 1);
    }
如果我使用软件模拟SPI,屏幕可以点亮且正常显示,一旦使用硬件SPI0,则不行,起初我以为是SPI的模式、bit数不对,但SPI_MODE_0到SPI_MODE_3,bit数8和32都试过了,还是点不亮,求做过的大佬指点一下吧。急急急。
 
 |