//电子标签1_IO方向设置及操作函数
#define Dallas1_IO_IN() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=8<<4;} //直接使用寄存器配置PC0下拉输入
#define Dallas1_IO_OUT() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=3<<4;} //直接使用寄存器配置PC0推挽输出50MHZ
#define Dallas1_DQ_OUT PCout(1) //数据端口 PC1
#define Dallas1_DQ_IN    Cin(1) //数据端口 PC1
//电子标签2_IO方向设置
#define Dallas2_IO_IN() {GPIOA->CRL&=0XFFFFFFF0;GPIOC->CRL|=8<<0;} //直接使用寄存器配置PA0下拉输入
#define Dallas2_IO_OUT() {GPIOA->CRL&=0XFFFFFFF0;GPIOC->CRL|=3<<0;} //直接使用寄存器配置PA0推挽输出50MHZ
#define Dallas2_DQ_OUT PAout(0) //数据端口 PA0
#define Dallas2_DQ_IN    Ain(0) //数据端口 PA0
//电子标签3_IO方向设置
#define Dallas3_IO_IN() {GPIOB->CRL&=0XFFFFFF0F;GPIOC->CRL|=8<<4;} //直接使用寄存器配置PB1下拉输入
#define Dallas3_IO_OUT() {GPIOB->CRL&=0XFFFFFF0F;GPIOC->CRL|=3<<4;} //直接使用寄存器配置PB1推挽输出50MHZ
#define Dallas3_DQ_OUT PBout(1) //数据端口 PB1
#define Dallas3_DQ_IN    Bin(1) //数据端口 PB1
//电子标签4_IO方向设置
#define Dallas4_IO_IN() {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=8<<20;} //直接使用寄存器配置PC5下拉输入
#define Dallas4_IO_OUT() {GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=3<<20;} //直接使用寄存器配置PC5推挽输出50MHZ
#define Dallas4_DQ_OUT PCout(5) //数据端口 PC5
#define Dallas4_DQ_IN    Cin(5) //数据端口 PC5
//电子标签5_IO方向设置
#define Dallas5_IO_IN() {GPIOC->CRL&=0XFFF0FFFF;GPIOC->CRL|=8<<16;} //直接使用寄存器配置PC4下拉输入
#define Dallas5_IO_OUT() {GPIOC->CRL&=0XFFF0FFFF;GPIOC->CRL|=3<<16;} //直接使用寄存器配置PC4推挽输出50MHZ
#define Dallas5_DQ_OUT PCout(4) //数据端口 PC4
#define Dallas5_DQ_IN    Cin(4) //数据端口 PC4
//电子标签6_IO方向设置
#define Dallas6_IO_IN() {GPIOA->CRL&=0XFF0FFFFF;GPIOC->CRL|=8<<0;} //直接使用寄存器配置PA5下拉输入
#define Dallas6_IO_OUT() {GPIOA->CRL&=0XFF0FFFFF;GPIOC->CRL|=3<<0;} //直接使用寄存器配置PA5推挽输出50MHZ
#define Dallas6_DQ_OUT PAout(5) //数据端口 PA5
#define Dallas6_DQ_IN    Ain(5) //数据端口 PA5
下面是初始化函数
//初始化Dallas1-6的IO口
void Dallas_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); //使能PORTC口时钟
RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE );//SPI1时钟使能
SPI_Cmd(SPI1, DISABLE); //使能SPI外设
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//ID2/ID6
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_5; //PORTA.0/5 推挽输出
GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_5); //输出1
//ID3
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; //PORTB.1 推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_1); //输出1
//ID1/ID5/ID4
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5; //PORTC.1/4/5 推挽输出
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_SetBits(GPIOC,GPIO_Pin_1|GPIO_Pin_4|GPIO_Pin_5); //输出1
}
|