stm8s +pdiusbd12 无法读ID,请指教
[复制链接]
我读的总是错,我参考的是圈圈的代码,
void main(){
CS_CLR; //CS_N=0; PG4 SUSP_CLR; // SUSP=0; PG5 REST_SET;//RST=1; PG1 EOT_SET;//EOT=1; PG0 DMACK_SET; //DMACK=1; PG3
//USB_DATA_OUT PC_ODR;
//USB_DATA_IN PC_IDR; id=D12ReadID();
while(1){
nop();
}
}
///////以下D12ReadID()用到的子函数部分////////////////
/******************************************************************* 函数功能:将数据口设置为输入状态 入口参数: 返 回: 备 注: ********************************************************************/ D12SetPortIn(void){ //将数据口设置为输入状态 PC_DDR=0X00; //输入 PC_CR1=0XFF; //上拉
PC_CR2=0X00; //无中断 } ////////////////////////End of function///////////////////////////// /******************************************************************** 函数功能:将数据口设置为输出状态 入口参数: 返 回: 备 注: ********************************************************************/ D12SetPortOut(void){ //将数据口设置为输出状态 PC_DDR=0XFF; //输出 PC_CR1=0XFF; //退挽输出 PC_CR2=0XFF; //10MHZ } ////////////////////////End of function///////////////////////////// /******************************************************************** 函数功能:将数据写到数据线上 入口参数:x_data,需要输出的数据 返 回: 备 注: ********************************************************************/ D12SetData(u8 x_data){ D12SetPortIn();////将数据口设置为输入状态 USB_DATA_OUT=x_data; // } ////////////////////////End of function///////////////////////////// /****************************************************************** 函数功能:D12写命令。 入口参数:Command:一字节命令。 返 回:无。 备 注:无。 ********************************************************************/ void D12WriteCommand(u8 Command) { //D12SetCommandAddr(); //设置为命令地址 USB_A0_SET; //D12ClrWr(); //WR置低 USB_WR_CLR;
D12SetPortOut(); //将数据口设置为输出状态(注意这里为空宏,移植时可能有用) D12SetData(Command); //输出命令到数据口上 //D12SetWr(); //WR置高 USB_WR_SET; D12SetPortIn(); //将数据口设置为输入状态,以备后面输入使用 } ////////////////////////End of function//////////////////////////////
/******************************************************************** 函数功能:写一字节D12数据。 入口参数:无。 返 回:写一字节。 备 注:无。 ********************************************************************/ u8 D12GetData(void){ D12SetPortOut; return USB_DATA_OUT; } ////////////////////////End of function/////////////////////////////
/******************************************************************** 函数功能:读一字节D12数据。 入口参数:无。 返 回:读回的一字节。 备 注:无。 ********************************************************************/ u8 D12ReadByte(void) { u8 temp; //D12SetDataAddr(); //设置为数据地址 USB_A0_CLR; //D12ClrRd(); //RD置低 USB_RD_CLR;
temp=D12GetData(); //读回数据 //D12SetRd(); //RD置高 USB_RD_SET; return temp; //返回读到数据 } ////////////////////////End of function/////////////////////////////
/******************************************************************** 函数功能:读D12的ID。 入口参数:无。 返 回:D12的ID。 备 注:无。 ********************************************************************/ u16 D12ReadID(void) { u16 id; D12WriteCommand(Read_ID); //写读ID命令 id=D12ReadByte(); //读回ID号低字节 id|=((u16)D12ReadByte())<<8; //读回ID号高字节 return id; } ////////////////////////End of function//////////////////////////////
|