STM32F103 I2C相关的奇怪问题

2019-03-23 20:17发布

我用的是火牛的开发板,单独的I2C都是调试通的,然后想加入LCD显示,奇怪的问题来了(也可能是很简单的问题,是我自己没想明白)
代码如下:
void Init_All_Periph(void)
 {

  RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART1_Configuration();
ADC_Configuration();
USART1Write((u8*)"test ",sizeof("test "));

I2C_EE_Init();
// Lcd_Configuration();
Lcd_Initialize();
// Lcd_Clear(RGB565CONVERT(0, 255, 255));
// Lcd_Clear(0x5040);  //这里我不注释掉的话 下面的I2C写操作不会成功。但是我如果把这一句加到上面的Lcd_Initialize()里的最后,则I2C写操作正常。我把Lcd_Clear(0x5040)里面的一句GPIOE->ODR =data;单独拿出来放在这里也会导致I2C不正常。郁闷了!
更郁闷的是不注释掉Lcd_Clear(0x5040); 把I2C写操作后面一句读操作打开,程序也能正常运行!

哪位大牛知道其中的奥秘?请不吝赐教!感谢

 }
int main(void)
{
  /*!< At this stage the microcontroller clock setting is already configured, 
       this is done through SystemInit() function which is called from startup
       file (startup_stm32f10x_xx.s) before to branch to application main.
       To reconfigure the default setting of SystemInit() function, refer to
       system_stm32f10x.c file
     */
u8 x=0;
u16 i;
u16 SensorTp;
uint8_t ee_buffer1[15] = {"abcdefghijklmn"};
uint8_t ee_buffer2[15] = {'2','5','9'};
Init_All_Periph();
printf("ee_buffer1 =  %s ",ee_buffer1);
I2C_EE_BufferWrite(ee_buffer1, 3, 15);    //I2C写操作
// I2C_EE_BufferRead(ee_buffer2, 0, 15);   //I2C读操作

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
Li_Lei
1楼-- · 2019-03-24 00:23
 精彩回答 2  元偷偷看……
hexhex
2楼-- · 2019-03-24 05:27
Lcd_Clear(0x5040) 这个是LCD全屏显示0x5040这种颜 {MOD}
Lcd_Initialize()这个是LCD初始化

这两天还发现一些I2C的问题,就是在修改其他东西的时候重新编译下载进去I2C就不正常了,这个时候断电重启很多次都不正常,然后随便加个I2C的读命令或者改动下其他的再编译下载进去,又好了。现象都能重复。我没有仔细跟踪I2C到底哪里出了问题。很多人都说片子自带的I2C不好用,是真的啊~~

一周热门 更多>