| 
				打卡等级:初来乍到打卡总天数:1最近打卡:2025-06-22 16:27:07  已绑定手机新手上路 
 
 
	积分16 
 | 
 
 发表于 2025-6-22 17:33:59
|
显示全部楼层 
| 您好帖主,请问我这样设计不对吗,为啥对单片机的时钟引脚进行检测发现无输出
 //========================================================================
 // 函数: void        SPI_Init(SPI_InitTypeDef *SPIx)
 // 描述: SPI初始化程序.
 // 参数: SPIx: 结构参数,请参考spi.h里的定义.
 // 返回: none.
 // 版本: V1.0, 2012-11-22
 //========================================================================
 void        SPI_Init(void)
 {
 //        if(SPIx->SPI_SSIG == ENABLE)                        SPCTL |=  (1<<7);        //conform Master or Slave by SPI_Mode(ignore SS)
 //        else                                                                        SPCTL &= ~(1<<7);        //conform Master or Slave by SS pin.
 //        SPI_Start(SPIx->SPI_Enable);
 //        SPI_FirstBit_Set(SPIx->SPI_FirstBit);
 //        SPI_Mode_Set(SPIx->SPI_Mode);
 //        SPI_CPOL_Set(SPIx->SPI_CPOL);
 //        SPI_CPHA_Set(SPIx->SPI_CPHA);
 //        SPI_Clock_Select(SPIx->SPI_Speed);
 SPI_SSIG_Set(ENABLE);        //conform Master or Slave by SPI_Mode(ignore SS)
 SPI_Start(ENABLE);
 SPI_FirstBit_Set(SPI_MSB);
 SPI_Mode_Set(SPI_Mode_Master);
 SPI_CPOL_Set(SPI_CPOL_Low);
 SPI_CPHA_Set(SPI_CPHA_2Edge);
 SPI_Clock_Select( SPI_Speed_4);
 
 SPI_RxTimerOut = 0;
 B_SPI_Busy = 0;
 
 }
 //========================================================================
 // 函数: void SPI_WriteByte(u8 dat)
 // 描述: SPI发送一个字节数据.
 // 参数: dat: 要发送的数据.
 // 返回: none.
 // 版本: V1.0, 2020-09-14
 //========================================================================
 void        SPI_WriteByte(u8 dat)                //SPI发送一个字节数据
 {
 SPDAT = dat;
 while (!(SPSTAT & SPIF)); // 等待传输完成
 SPSTAT = 0x80;          // 清除传输完成标志
 }
 //========================================================================
 // 函数: void SPI_WriteWord(unsigned int cmd)
 // 描述: SPI发送两个字节数据.
 // 参数: dat: 要发送的数据.
 // 返回: none.
 // 版本: V1.0, 2020-09-14
 //========================================================================
 void SPI_WritewWord(unsigned int cmd)
 {
 SPI_WriteByte(cmd >> 8); // 发送高字节(控制+地址)
 SPI_WriteByte(cmd);      // 发送低字节(数据)
 // 延时确保满足t8时序要求(最小20ns)
 _nop_();
 _nop_();
 _nop_();
 }
 void main()
 {
 //总体设置(允许访问特殊功能寄存器,允许触发中断)
 P_SW2 |= 0x80;                                                //使能访问特殊功能寄存器(使能后才能访问特殊功能寄存器)
 EA = 1;                                                                  //中断允许寄存器(CPU开放中断)
 //单片机管脚初始化(对管脚进行设置)
 //LED初始化,点亮
 //LED_Init();
 //PWM管脚初始化
 P1M1 = 0x00;      //设置P1的所有管脚都为准双向口
 P1M0 = 0x00;
 // P3.3 ~ P3.7 配置为高阻输入:对应 P3M1 的 bit3~bit7 置 1,P3M0 的 bit3~bit7 置 0
 P3M1 |= 0xF8;  // 1111 1000:bit3~bit7 置 1(高阻输入需要 PnM1=1)
 P3M0 &= 0x07;  // 0000 0111:bit3~bit7 置 0(高阻输入需要 PnM0=0)
 // P3 其他引脚(P3.0 ~ P3.2)保持准双向口:默认已为 0(若被修改过,可显式清 0)
 P3M1 &= 0x07;  // 确保 P3.0 ~ P3.2 的 PnM1=0
 P3M0 &= 0x07;  // 确保 P3.0 ~ P3.2 的 PnM0=0
 // P2.0 ~ P2.1 配置为高阻输入:对应 P2M1 的 bit0~bit1 置 1,P2M0 的 bit0~bit1 置 0
 P2M1 |= 0x03;  // 0000 0011:bit0~bit1 置 1(高阻输入需要 PnM1=1)
 P2M0 &= 0xFC;  // 1111 1100:bit0~bit1 置 0(高阻输入需要 PnM0=0)
 // P2.2 (SS): 推挽输出(即使不使用,也建议配置)
 P2M1 &= ~(1 << 2);
 P2M0 |=  (1 << 2);  // 推挽输出
 // SCLK (P2.5) -> 推挽输出
 P2M1 &= ~(1 << 5);
 P2M0 |=  (1 << 5);
 // MOSI (P2.3) -> 推挽输出
 P2M1 &= ~(1 << 3);
 P2M0 |=  (1 << 3);
 // MISO (P2.4) -> 高阻输入
 P2M1 |=  (1 << 4);
 P2M0 &= ~(1 << 4);
 // P2.6~P2.7: 准双向口(按您要求)
 P2M1 &= ~(0xC0);  // 清除 P2.6/P2.7 的 M1 位 (1100 0000)
 P2M0 &= ~(0xC0);  // 清除 P2.6/P2.7 的 M0 位
 SPI_SCLK_2  = 0;
 SPI_MOSI_2  = 1;
 P_SW1  = 0x04;
 SPI_Init( );
 }
 | 
 |