- 打卡等级:初来乍到
- 打卡总天数:5
- 最近打卡:2025-04-30 15:22:39
注册会员
- 积分
- 96
|
#define QSPI_SW 0
#if (QSPI_SW == 2)
sbit CS = P4^0;
sbit SDI_IO0 = P4^1;
sbit SDO_IO1 = P4^2;
sbit SCK = P4^3;
sbit WP_IO2 = P5^2;
sbit HLD_IO3 = P5^3;
#endif
#if (QSPI_SW == 1)
sbit CS = P1^4;
sbit SDI_IO0 = P1^5;
sbit SDO_IO1 = P1^6;
sbit SCK = P1^7;
sbit WP_IO2 = P1^3;
sbit HLD_IO3 = P1^2;
#endif
#if (QSPI_SW == 0)
sbit CS = P4^7;
sbit SDI_IO0 = P2^5;
sbit SDO_IO1 = P2^6;
sbit SCK = P2^7;
sbit WP_IO2 = P4^6;
sbit HLD_IO3 = P4^5;
#endif
void QSPI_Init()
{
#if (QSPI_SW == 2)
P4M0 |= 0x09; //设置CS,SCK为强推挽模式
P4M1 &= ~0x09;
P4SR &= ~0x0f; //设置所有的QSPI口为快速模式
P5SR &= ~0x0c;
P4PU |= 0x0f; //使能所有的QSPI口的内部10K上拉电阻
P5PU |= 0x0c;
P4BP &= ~0x06; //使能QSPI的IO0~IO3数据硬件自动设置端口模式
P5BP &= ~0x0c;
P_SW4 = (P_SW4 & ~0x03) | 0x01; //使用QSPI的第2组切换(P4.0/P4.1/P4.2/P4.3/P5.2/P5.3)
#endif
#if (QSPI_SW == 1)
P1M0 |= 0x90; //设置CS,SCK为强推挽模式
P1M1 &= ~0x90;
P1SR &= ~0xfc; //设置所有的QSPI口为快速模式
P1PU |= 0xfc; //使能所有的QSPI口的内部10K上拉电阻
P1BP &= ~0x6c; //使能QSPI的IO0~IO3数据硬件自动设置端口模式
P_SW4 &= ~0x03; //使用QSPI的第1组切换(PP1.2/P1.3/P1.4/P1.5/P1.6/P1.7)
#endif
#if (QSPI_SW == 0)
P4M0 |= 0x80; P4M1 &= ~0x80; //设置CS,SCK为强推挽模式 P4^7;强推挽//P2^7;强推挽
P2M0 |= 0x80; P2M1 &= ~0x80;
P4SR &= ~0xe0; //设置所有的QSPI口为快速模式
P2SR &= ~0xe0;
P2PU |= 0xe0; //使能所有的QSPI口的内部10K上拉电阻
P4PU |= 0xe0;
P2BP &= ~0x60; //使能QSPI的IO0~IO3数据硬件自动设置端口模式
P4BP &= ~0x60;
P_SW4 = (P_SW4 & ~0x03) | 0x10; //使用QSPI的第3组切换(P4.7/P2^5/P2^6/P2^7/P4^6/P4^5)
#endif
程序部分没有改动,只是在功能脚切换部分做了以上修改。但是在串行FLYSH编程器中无法运行。如果把#define QSPI_SW 0 切换到 #define QSPI_SW 1 就一切正常。是哪里出了问题吗?
|
|