你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F439的奇怪问题?

[复制链接]
long_wuyi 提问时间:2014-7-13 18:28 /
我在使用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的错误消失????
 
     
收藏 评论1 发布时间:2014-7-13 18:28

举报

1个回答
废鱼 回答时间:2014-7-14 09:24:44

RE:STM32F439的奇怪问题?

楼主能不能把问题说明白一些,如果加了这些设置,会将BUSY=1,然后呢?
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版