- void main() //程序开始运行的入口
- {
- int dat = 0; //初始数值
- sys_init(); //USB功能+IO口初始化
- usb_init(); //usb库初始化
- EUSB = 1;
- Timer0_Init(); //定时器0初始化
-
- EA = 1; //CPU开放中断,打开总中断。
-
- while( DeviceState != DEVSTATE_CONFIGURED );
-
- //SPI_Init(); //SPI初始化
-
- while(1) //死循环
- {
- u8 ID;
-
- delay_ms(2);
-
- if( bUsbOutReady ) //单片机每接受到一次数据,就打印一次存储芯片的ID号回来串口
- {
- // USB_SendData(UsbOutBuffer,OutNumber);
- usb_OUT_done();
- SPI_Init(); //SPI初始化
- CS = 0;
-
- SPI_WriteByte(0xAB); //写入一个字节,0xAB命令,读取芯片ID
-
- SPI_WriteByte(0x00); //写入一个字节,空命令,读取芯片ID
- SPI_WriteByte(0x00); //写入一个字节,空命令,读取芯片ID
- SPI_WriteByte(0x00); //写入一个字节,空命令,读取芯片ID
-
- ID = SPI_RearByte(); //读取一个字节
-
- CS = 1 ;
-
- printf("本芯片的ID: %u\r\n", (u16)ID); //ID是无符号的8位变量 %u 对应u16,这是10进制打印
- printf("本芯片的ID: %x\r\n", (u16)ID); //ID是无符号的8位变量 %u 对应u16,这是16进制打印
-
-
- }
-
- if( TIM_10MS_Flag==1 ) //如果10ms到了
- {
- TIM_10MS_Flag = 0; //清空标志位
- }
-
- //研究SPI时序图可知,SPI初始化结束后,往从机里发0xAB指令,接着发3个任意空指令,
- //接着马上在D0上读取一个字节,这个字节就是芯片的ID
-
-
-
-
- }
- }
复制代码
是不是发现出差啦?‘
其实主要的初始化问题:
我们把主函数改一下:
’ |