
本帖最后由 edmundlee 于 2019-5-3 18:09 编辑 STM32F103RC的项目, 当中用到了I2C, I2C是以中断+DMA的方式做,之前还是工作正常, 在更改I2C以外的其余部分后,发现I2C2_EV_IRQHandler不再正常的响应。 本着一贯遇到Bug绝不绕路走的原则, 花了我半天时间总算把引起问题的原因找出来了。 当设置了START后, 在EV_IRQHandler中断还没来到之前, 初始化另一外设, 这问题就会出现了。 而追查下去, 是由于改动了APB1ENR LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3); 就是这一条与I2C毫不相关的东东, 引发了I2C2_EV_IRQHandler不再响应。 尝试过, START后延迟几十个微秒再做USART3的初始化, 就不会再有I2C2_EV_IRQHandler不再响应的问题。 尝试过, START后做USART3的初始化, 只把LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_USART3);这一句屏蔽, 也不会再有I2C2_EV_IRQHandler不再响应的问题。 由于USART3的初始化并没有马上使用到, 甚至是USART3还没使能。 所以推论出结果是, START后就不要动APB1ENR, 否则就会出问题。 若有ST的FAE看到此贴, 又不能重复我提到的问题, 可以连系我提供 |
直接写寄存试过, 用BIT Band也试过, 都一样