搜索
查看: 2811|回复: 6

[原创] 【STM8-SO8-DISCO】——10、串口打印EEPROM数据

[复制链接]
  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    49

    主题

    3724

    帖子

    429

    蝴蝶豆

    论坛元老

    最后登录
    2021-8-7
    发表于 2019-3-12 01:06:06 | 显示全部楼层 |阅读模式
    【STM8-SO8-DISCO】——10、串口打印EEPROM数据


      本贴在前贴的基础上,添加了串口打印EEPROM数据。
    前贴链接:
    【STM8-SO8-DISCO】——9、字节方式读写EEPROM
    https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=619717&fromuid=307297
    串口打印功能请参考:
    【STM8-SO8-DISCO】——8、测试 UART1_Printf
    https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=619620&fromuid=307297

      主函数main()实现。
    1. void main(void)
    2. {
    3.   uint8_t i = 0;   
    4.   uint8_t dir = 0;

    5.   STARTUP_SWIM_DELAY_5S;

    6.   /* Clock configuration -----------------------------------------*/
    7.   CLK_Config();

    8.   /* GPIO Configuration ------------------------------------------*/
    9.   GPIO_Config();  

    10.   /* FLASH Configuration ------------------------------------------*/
    11.   FLASH_Config();
    12.   
    13.   UART1_DeInit();
    14.   /* UART1 configuration ------------------------------------------------------*/
    15.   /* UART1 configured as follow:
    16.         - BaudRate = 115200 baud  
    17.         - Word Length = 8 Bits
    18.         - One Stop Bit
    19.         - No parity
    20.         - Receive and transmit enabled
    21.         - UART1 Clock disabled
    22.   */
    23.   UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO,
    24.               UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);

    25.   /* Output a message on Hyperterminal using printf function */
    26.   printf("\n\rUART1 Example :retarget the C library printf()/getchar() functions to the UART\n\r");
    27.   printf("EEPROM Test!\n\r");
    28.   
    29.   /* ********************************************************************* */
    30.   printf("Read from EEPROM Start:\n\r");  
    31.   /* Fill the buffer with EEPROM Data */
    32.   for (i=0;i<128;i++)
    33.   {
    34.     /* Read byte at a specified address i */
    35.     GBuffer[i] = FLASH_ReadByte(EEPROM_BASE_ADDR+i);
    36.   }
    37.   
    38.   if (GBuffer[0] == 0x00)
    39.     dir = 1;
    40.   else
    41.     dir = 0;
    42.   
    43.   for (i = 0; i < 128; i++)
    44.   {
    45.     printf("0x%02x,", GBuffer[i] );
    46.     if ((i+1)%16 == 0)
    47.       printf("\n\r");
    48.   }
    49.   printf("Reading End!\n\r");
    50.   
    51.   /* ********************************************************************* */
    52.   printf("Write EEPROM Start:\n\r");  
    53.   for (i=0;i<128;i++)
    54.   {
    55.     if (dir == 0)
    56.       /* Write byte at a specified address i */
    57.       FLASH_ProgramByte((EEPROM_BASE_ADDR+i),i);
    58.     else
    59.       /* Write byte at a specified address i */
    60.       FLASH_ProgramByte((EEPROM_BASE_ADDR+i),i+128);   
    61.   }
    62.   
    63.   /* Fill the buffer with EEPROM Data */
    64.   for (i=0;i<128;i++)
    65.   {
    66.     /* Read byte at a specified address i */
    67.     GBuffer[i] = FLASH_ReadByte(EEPROM_BASE_ADDR+i);
    68.   }
    69.   
    70.   for (i = 0; i < 128; i++)
    71.   {
    72.     printf("0x%02x,", GBuffer[i] );
    73.     if ((i+1)%16 == 0)
    74.       printf("\n\r");
    75.   }  
    76.   printf("Writting End!\n\r");
    77.   
    78.   /* ********************************************************************* */
    79.   
    80.   while (1)
    81.   {   
    82.     GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS);
    83.     Delay(0xFFFF);
    84.   }
    85. }
    复制代码

      程序功能与前贴相似,只不过原来由打断点观察内存及变量,改为了从上位机串口助手观察。

      实验连线如下图
    01.jpg

      第一次上电,串口打印内容。
    11.jpg

      第二次上电,串口打印内容。
    12.jpg

      首先读取全部128字节EEPROM中的数据,打印到串口;然后修改EEPROM内容,再次从EEPROM读取全部数据,并打印。
      程序中判断EEPROM中第一个字节是否等于0x00,如果等于0x00,则往EEPROM中写入内容0x80到0xFF;如果不等于0x00,则往EEPROM写入0x00到0x7F。每次上电,EEPROM中内容都会修改一次。

      至此,通过串口打印EEPROM内容实验完成。
      本贴测试工程附上:
       STM8S_StdPeriph_Flash_EEPROM_Printf.rar (268.3 KB, 下载次数: 26)
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    45

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2020-1-3
    发表于 2019-6-10 10:58:12 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    70

    帖子

    0

    蝴蝶豆

    金牌会员

    最后登录
    2021-5-11
    发表于 2019-6-13 19:06:19 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    45

    帖子

    0

    蝴蝶豆

    中级会员

    最后登录
    2020-1-3
    发表于 2019-6-17 16:14:34 | 显示全部楼层
    学习学习
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    8

    帖子

    0

    蝴蝶豆

    新手上路

    最后登录
    2019-6-21
    发表于 2019-6-21 21:29:24 | 显示全部楼层
    谢谢分享
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    6

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2020-8-14
    发表于 2019-7-8 00:22:32 | 显示全部楼层
    这些日子正在搞8S的芯片,有点启发性的都下下来看一下,谢谢楼主!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    18

    帖子

    2

    蝴蝶豆

    初级会员

    最后登录
    2020-7-31
    发表于 2020-1-7 08:24:36 | 显示全部楼层
    学习一下串口打印 数字要怎么调配。
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|论坛-意法半导体STM32/STM8技术社区

    GMT+8, 2024-4-25 08:16 , Processed in 1.200306 second(s), 39 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表