打印

求助,用霸道的板子I2C与EEPROM程序调试,菜鸟求大家指点,谢谢

[复制链接]
402|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小蘭|  楼主 | 2020-4-13 16:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按照教程的I2C实验存储中文并输出,怎么调都打印不了,小弟刚学,基础薄弱,求各位指点,谢谢
[code]
#include "stm32f10x.h"
#include "./usart/bsp_usart.h"
#include "./i2c/bsp_i2c_ee.h"
#include "./led/bsp_led.h"
#include <string.h>


uint8_t cal_flag = 0;
uint8_t k;

/*存储小数和整数的数组,各7个*/
long double double_buffer[7] = {0};
int int_bufffer[7] = {0};
char date_buffer[] ="这是一个实验";

#define DOUBLE_ADDR       10
#define LONGINT_ADDR      70
#define CHAR_ADDR                                        100

/**
  * @brief  主函数
  * @param  无
  * @retval 无
  */
int main(void)
{
  LED_GPIO_Config();

  /* 串口初始化 */
        USART_Config();
        
        printf("\r\n 这是一个EEPROM 读写小数和长整数实验 \r\n");

        /* I2C 外设初(AT24C02)始化 */
        I2C_EE_Init();                  


                  /*读取数据标志位*/
    I2C_EE_BufferRead(&cal_flag, 0, 1);

    if( cal_flag != 0xCD )        /*若标志等于0xcd,表示之前已有写入数据*/
    {      
        printf("\r\n没有检测到数据标志,FLASH没有存储数据,即将进行小数写入实验\r\n");
        cal_flag =0xCD;

        /*写入标志到0地址*/
        I2C_EE_BufferWrite(&cal_flag, 0, 1);

        /*生成要写入的数据*/
        for( k=0; k<7; k++ )
        {
           double_buffer[k] = k +0.1;
           int_bufffer[k]=k*500+1 ;
        }

        /*写入小数数据到地址10*/
        I2C_EE_BufferWrite((void*)double_buffer,DOUBLE_ADDR, sizeof(double_buffer));
        /*写入整数数据到地址60*/
        I2C_EE_BufferWrite((void*)int_bufffer, LONGINT_ADDR, sizeof(int_bufffer));
                                
              I2C_EE_BufferWrite((void*)date_buffer, CHAR_ADDR, sizeof(date_buffer));

        printf("向芯片写入数据:");
        /*打印到串口*/
        for( k=0; k<7; k++ )
        {
          printf("小数tx = %LF\r\n",double_buffer[k]);
          printf("整数tx = %d\r\n",int_bufffer[k]);
                                       
                                        printf("字符串 rx = %s\r\n",date_buffer[k]);
        }

        printf("\r\n请复位开发板,以读取数据进行检验\r\n");      
               
    }   
    else
    {      
               printf("\r\n检测到数据标志\r\n");

                                /*读取小数数据*/
        I2C_EE_BufferRead((void*)double_buffer, DOUBLE_ADDR, sizeof(double_buffer));
                                
                                /*读取整数数据*/
        I2C_EE_BufferRead((void*)int_bufffer, LONGINT_ADDR, sizeof(int_bufffer));
                        
                        
              I2C_EE_BufferRead((void*)date_buffer, CHAR_ADDR, sizeof(date_buffer));
                        
                        
                                printf("\r\n从芯片读到数据:\r\n");                        
        for( k=0; k<7; k++ )
                                {
                                        printf("小数 rx = %LF \r\n",double_buffer[k]);
                                        printf("整数 rx = %d \r\n",int_bufffer[k]);                                
                                        printf("字符串 rx = %s\r\n",date_buffer[k]);                                 
                                }

    }   


  while (1)
  {      
  }
}
[code]

使用特权

评论回复

相关帖子

沙发
xyz549040622| | 2020-4-14 08:12 | 只看该作者
这个,103的硬件I2c就是有问题的,可以百度下,避免入坑。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

451

主题

463

帖子

1

粉丝