STM32 模拟 IIC 的问题 PA15 PB3

2019-12-20 21:44发布

画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
0条回答

一周热门 更多>