画PCB 时犯2 没注意到 PB3 和 PA15是 JTAG接口,然后度娘了一些代码,把PA15 和 PB3 设置成了普通IO口,可还是读不了 数据,IIC 挂了一个 AT24C32 存储芯片和 一个DS3231时钟芯片
配置:
void IIC_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO,ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //CLK
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_Init(GPIOB,&GPIO_InitStructure);
}
IIC.H
#define IIC_SDA_Init RCC_APB2Periph_GPIOA,GPIOA,GPIO_Pin_15,GPIO_Speed_2MHz,GPIO_Mode_Out_PP
#define IIC_SCL_Init RCC_APB2Periph_GPIOB,GPIOB,GPIO_Pin_3,GPIO_Speed_2MHz,GPIO_Mode_Out_PP
#define IIC_SCL PBout(3)
#define IIC_SDA PAout(15) //IIC·¢Ëíêy¾YóÃ
#define IN_SDA PAin(15) //IIC¶áè¡êy¾YóÃ
//¸Ä±äSDAËù½óμÄIOêäèë/êä3ö
#define IIC_SDA_IN() {GPIOA->CRH &= 0xffffff0f;GPIOA->CRH |= 0x80000000;} //éèÖÃÎaêäèëģ꽻òÕß¿a©Ä£ê½£¨ía¼óéÏà-£©
#define IIC_SDA_OUT() {GPIOA->CRH &= 0xffffff0f;GPIOA->CRH |= 0x30000000;} //éèÖÃ3é׼˫Ïò»òÕßíÆíìêä3ö£¬×î′óËù¶è50MHz
一周热门 更多>