你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
stm32f107 iic进不了中断【悬赏问答】
[复制链接]
信长之野望
提问时间:2012-8-30 17:17 /
如题。
大家说下中断应该注意几个方面,比如中断的配置,iic进中断的条件。大家想到的话就说一下容易忽略的地方 提点一下小弟。万分感谢
赞
0
收藏
0
评论
8
分享
发布时间:2012-8-30 17:17
举报
请先
登录
后回复
8个回答
废鱼
回答时间:2012-8-31 09:52:41
a0a.1 0b0c
RE:stm32f107 iic进不了中断【悬赏问答】
中断的使用主要是开启模块中断,中断向量正确就可以。
赞
0
评论
回复
支持
反对
信长之野望
回答时间:2012-8-31 12:31:28
a0a.1 0b0c
回复:stm32f107 iic进不了中断【悬赏问答】
回复第 2 楼 于2012-08-31 09:52:41发表:
中断的使用主要是开启模块中断,中断向量正确就可以。
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);
NVIC_InitStructure.NVIC_IRQChannel =I2C1_EV_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
I2C_ITConfig(I2C1,I2C_IT_BUF,ENABLE);
I2C_ITConfig(I2C1,I2C_IT_EVT,ENABLE);
void I2C_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
I2C_GPIO_Configuration();
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = I2C1_SLAVE_ADDRESS7;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
I2C_Cmd(I2C1, ENABLE);
I2C_Init(I2C1, &I2C_InitStructure);
I2C_AcknowledgeConfig(I2C1, ENABLE);
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
相关代码应该就是这样了。while都能过,产生start后不会进中断。老大有空帮忙看看
赞
0
评论
回复
支持
反对
中山无雪
回答时间:2012-8-31 15:40:31
a0a.1 0b0c
RE:stm32f107 iic进不了中断【悬赏问答】
据说ST的MCU使用I2C都特别麻烦,还没用过,也有同问
赞
0
评论
回复
支持
反对
信长之野望
回答时间:2012-8-31 16:50:51
a0a.1 0b0c
回复:stm32f107 iic进不了中断【悬赏问答】
回复第 4 楼 于2012-08-31 15:40:31发表:
据说ST的MCU使用I2C都特别麻烦,还没用过,也有同问
不知道高手用着怎么样。。我做着很麻烦,很多问题,解决了一些还是过不了
赞
0
评论
回复
支持
反对
废鱼
回答时间:2012-8-31 17:18:15
a0a.1 0b0c
RE:stm32f107 iic进不了中断【悬赏问答】
对IIC不如模拟的好,很多人用模拟的。
赞
0
评论
回复
支持
反对
信长之野望
回答时间:2012-9-3 09:39:11
a0a.1 0b0c
回复:stm32f107 iic进不了中断【悬赏问答】
回复第 6 楼 于2012-08-31 17:18:15发表:
对IIC不如模拟的好,很多人用模拟的。
恩,我也看到网上很多说iic不好的,还有很多模拟的代码。不过boss不让用模拟..硬件的确也有人调通了,就想试试
赞
0
评论
回复
支持
反对
hhqust
回答时间:2013-11-8 12:34:48
a0a.1 0b0c
回复:stm32f107 iic进不了中断【悬赏问答】
我也遇到这个问题了 原因是 电路板设计的时候用的是IIC1重映射 到PB8,9。我程序里还是用的PB6,7。改过来之后就好了。
赞
0
评论
回复
支持
反对
aibaibai
回答时间:2016-1-27 15:15:51
a1024a.1 0b0c
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
RE:stm32f107 iic进不了中断【悬赏问答】
回复:stm32f107 iic进不了中断【悬赏问答】
中断的使用主要是开启模块中断,中断向量正确就可以。
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0000);
NVIC_InitStructure.NVIC_IRQChannel =I2C1_EV_IRQn;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
I2C_ITConfig(I2C1,I2C_IT_BUF,ENABLE);
I2C_ITConfig(I2C1,I2C_IT_EVT,ENABLE);
void I2C_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
I2C_GPIO_Configuration();
I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
I2C_InitStructure.I2C_OwnAddress1 = I2C1_SLAVE_ADDRESS7;
I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
I2C_InitStructure.I2C_ClockSpeed = I2C_Speed;
I2C_Cmd(I2C1, ENABLE);
I2C_Init(I2C1, &I2C_InitStructure);
I2C_AcknowledgeConfig(I2C1, ENABLE);
while(I2C_GetFlagStatus(I2C1, I2C_FLAG_BUSY));
I2C_GenerateSTART(I2C1, ENABLE);
相关代码应该就是这样了。while都能过,产生start后不会进中断。老大有空帮忙看看
RE:stm32f107 iic进不了中断【悬赏问答】
回复:stm32f107 iic进不了中断【悬赏问答】
据说ST的MCU使用I2C都特别麻烦,还没用过,也有同问
不知道高手用着怎么样。。我做着很麻烦,很多问题,解决了一些还是过不了
RE:stm32f107 iic进不了中断【悬赏问答】
回复:stm32f107 iic进不了中断【悬赏问答】
对IIC不如模拟的好,很多人用模拟的。
恩,我也看到网上很多说iic不好的,还有很多模拟的代码。不过boss不让用模拟..硬件的确也有人调通了,就想试试
回复:stm32f107 iic进不了中断【悬赏问答】