搜索
查看: 2131|回复: 1

[已解决] STM32F439的奇怪问题?

[复制链接]

该用户从未签到

4

主题

15

帖子

0

蝴蝶豆

新手上路

最后登录
1970-1-1
发表于 2014-7-13 18:28:01 | 显示全部楼层 |阅读模式
我在使用STM32F439IG芯片遇到怪问题,有请各位:
I2C初始代码如下:
     我想
void I2C_Configuration(void)
{        I2C_InitTypeDef  I2C_InitStructure;
        GPIO_InitTypeDef  GPIO_InitStructure; 
        NVIC_InitTypeDef NVIC_InitStructure;
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH,ENABLE);
        GPIO_PinAFConfig(GPIOH, GPIO_PinSource4, GPIO_AF_I2C2);
        GPIO_PinAFConfig(GPIOH, GPIO_PinSource5, GPIO_AF_I2C2);
        GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_4 | GPIO_Pin_5;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOH, &GPIO_InitStructure); 
        I2C_SoftwareResetCmd(I2C2,ENABLE);
        I2C_DeInit(I2C2);
        I2C_SoftwareResetCmd(I2C2,DISABLE);
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
        I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
        I2C_InitStructure.I2C_OwnAddress1 = 0x10;
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
        I2C_InitStructure.I2C_ClockSpeed = 400000; 
        I2C_Init(I2C2, &I2C_InitStructure);
       NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                                                                                       
       NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
       NVIC_InitStructure.NVIC_IRQChannel=I2C2_EV_IRQn;
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;               
     NVIC_Init(&NVIC_InitStructure);       
     NVIC_InitStructure.NVIC_IRQChannel = I2C2_ER_IRQn;
     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
     NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_Init(&NVIC_InitStructure);
    I2C_Cmd(I2C2, ENABLE);
}       
  本想加点中断处理,但只要在代码的任何地方加:
       I2Cx->CR2|=I2C_IT_EVT|I2C_IT_ERR;
 再编译下载后,执行I2C_Configuration都得到Busy=1的状态.
若将"I2Cx->CR2|=I2C_IT_EVT|I2C_IT_ERR",Busy=1的错误消失????
 
     
回复

使用道具 举报

该用户从未签到

133

主题

4688

帖子

239

蝴蝶豆

版主

最后登录
2021-4-10
发表于 2014-7-14 09:24:44 | 显示全部楼层

RE:STM32F439的奇怪问题?

楼主能不能把问题说明白一些,如果加了这些设置,会将BUSY=1,然后呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

GMT+8, 2024-4-29 07:52 , Processed in 1.155282 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表