/* Check the end of ADC1 reset calibration register */ //while(ADC_GetResetCalibrationStatus(ADC1); while( !STM32_Adc1_Regs->cr2.bit.RSTCAL );//该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。
while (0) { //while(ADC_GetFlagStatus(ADC1,ADC_FLAG_EOC) == RESET); while(!STM32_Adc1_Regs->sr.bit.EOC);//转换结束位 0:转换未完成 1:转换完成
/* Get the conversion value */ //ADC_ConvertedValue = ADC_GetConversionValue(ADC1); //ADC_ConvertedValue = (ADC1->DR); ADC_ConvertedValue =STM32_Adc1_Regs->dr.all;
/* Clear the end of conversion flag */ //ADC_ClearFlag(ADC1,ADC_FLAG_EOC); STM32_Adc1_Regs->sr.bit.EOC=0;// 上面读DR,就自动清零这位了! }
/* Test on EV7 and clear it */ // 【RXNE=1 数据寄存器非空; 读写DR清零 】 BUSY=1 在总线上正在进行数据通讯 MSL=1 主模式 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED));/* EV7 ((u32)0x00030040) BUSY, MSL and RXNE flags */
data = STM32_I2c1_Regs->dr.all; return(data);
}//end sub // 只写低8位 //========================================================================== // //==========================================================================
void WriteAByte(uint8 data) { //I2C_AcknowledgeConfig(I2C1, ENABLE);//ACK=1; STM32_I2c1_Regs->cr1.bit.ACK=1; // ACK:应答使能 1:在接收到一个字节后返回一个应答(匹配的地址或数据) STM32_I2c1_Regs->dr.all=data; /* Test on I2C1 EV8 and clear it */ // 【TXE=1 数据寄存器空 ;写数据DR清除,START,STOP】 BTF=1: 字节发送结束 TRA=数据已发送 BUSY=在总线上正在进行数据通讯 MSL=主模式 while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED));/* EV8 ((u32)0x00070084) TRA, BUSY, MSL, TXE and BTF flags */