|
|
/* --- 1. 配置 SPI 引脚为推挽输出 --- */
P1M0 |= 0x28; P1M1 &= ~0x28; // P1.3, P1.5
P3M0 |= 0x14; P3M1 &= ~0x14; // P3.2, P3.4
P3M0 |= 0x80; P3M1 &= ~0x80; // P3.7
P5M0 &= ~0x10; // 清除 P3.5, P3.6 的 P3M0 位
P5M1 &= ~0x10; // 清除 P3.5, P3.6 的 P3M1 位
/* --- 2. 配置按键引脚为准双向模式 --- */
KEY1=1;
KEY2=1;
P3M0 &= ~0x60; // 清除 P3.5, P3.6 的 P3M0 位
P3M1 &= ~0x60; // 清除 P3.5, P3.6 的 P3M1 位
void SPI_HW_Init(u8 TDQH)
{
if(TDQH==0){P_SW1 = (P_SW1 & 0xF3) | 0x00;} /* SPI组0: P1.3-MOSI, P1.5-SCLK */
if(TDQH==3){P_SW1 = (P_SW1 & 0xF3) | 0x0C;} /* SPI组3: P3.4-MOSI, P3.2-SCLK */
SPITOCR=0X20;
SPCTL = 0xD0; /* SSIG=1, SPEN=1, MSTR=1, CPOL=0, CPHA=0 */
SPCTL = (SPCTL & 0xFC) | 0x01; /* 4分频 → 27M/2/4 = 3.375MHz */
SPSTAT = 0xC0; /* 清除 SPIF 和 WCOL 标志 */
SPDAT = 0;
}
驱动幻彩LED
切换到 P1.3 输出间隔相对正常,但切换到 P3.4 输出间隔就不正常了 使用的是硬件SPI输出!
P1.3输出
P3.4输出
|
|