你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32实例-I2C-EEPROM 实验⑧-主函数

[复制链接]
STMCU小助手 发布时间:2022-6-27 10:35
    编写好 I2C 和 AT24CXX驱动函数后, 接下来就可以编写主函数了, 代码如下:
  1. /****************************************************************
  2. * 函 数 名 : main
  3. * 函数功能 : 主函数
  4. * 输 入 : 无
  5. * 输 出 : 无
  6. *****************************************************************/
  7. int main()
  8. {
  9. u8 i=0;
  10. u8 key;
  11. u8 k=0;
  12. SysTick_Init(72);
  13. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //中断优先级分组 分2 组
  14. LED_Init();
  15. USART1_Init(9600);
  16. KEY_Init();
  17. AT24CXX_Init();
  18. while(AT24CXX_Check()) //检测 AT24C02 是否正常
  19. {
  20. printf("AT24C02检测不正常!\r\n");
  21. delay_ms(500);
  22. }
  23. printf("AT24C02检测正常!\r\n");
  24. while(1)
  25. {
  26. key=KEY_Scan(0);
  27. if(key==KEY_UP)
  28. {
  29. k++;
  30. if(k>255)
  31. {
  32. k=255;
  33. }
  34. AT24CXX_WriteOneByte(0,k);
  35. printf("写入的数据是:%d\r\n",k);
  36. }
  37. if(key==KEY_DOWN)
  38. {
  39. k=AT24CXX_ReadOneByte(0);
  40. printf("读取的数据是:%d\r\n",k);
  41. }
  42. i++;
  43. if(i%20==0)
  44. {
  45. led1=!led1;
  46. }
  47. delay_ms(10);
  48. }
  49. }
复制代码

    主函数实现的功能很简单,首先调用之前编写好的硬件初始化函数,包括
SysTick 系统时钟,中断分组,LED 初始化等。然后调用我们前面编写的AT24CXX_Init 函数初始化 I2C 端口,接着调用 AT24CXX_Check 函数检测是否存在 AT24CXX 芯片,如果芯片存在就会输出“AT24C02 检测正常!”信息。最后进入 while 循环,调用KEY_Scan 函数,不断检测 K_UP 和 K_DOWN 按键是否按下,如果 K_UP 按键按下,将变量 k 值加 1 写入到 24C02 的地址0 内,并通过打印输出写入的值;当 K_OWN 按键按下,将 24C02 的地址 0 内数据读取出来保存到变量k 中,并通过打印输出读取的值。整个过程中 D1 指示灯会间隔 200ms 闪烁,提示系统正常运行。

实验现象
    将工程程序编译后下载到开发板内,串口会输出 AT24C02 检测正常信息,同时可以看到 D1 指示灯不断闪烁,表示程序正常运行。当按下 K_UP 按键后,将数据写入到 24C02 芯片内,同时串口打印输出写入的值;当按下 K_DOWN 按键后,读取 24C02 芯片内的值,同时串口打印输出读取的值。如果想在串口调试助手上看到输出信息, 可以打开 “串口调试助手” ,首先勾选下标号 1 DTR 框,然后再取消勾选。这是因为此串口助手启动时会把系统复位住,通过 DTR 状态切换下即可。然后设置好波特率等参数后,串口助手上即会收到串口发送过来的信息。(串口助手上先勾选下标号1 DTR 框,然后再取消勾选)如下图所示:



微信图片_20220627103502.png

    实验说明:用户需要将 COM3 模块上的 P232 端子短接到IIC2 端,否则无法显示此功能,这个在硬件电路已经说过。开发板出厂默认已经短接到 IIC2 上,如下:

微信图片_20220627103459.png

    存储在 24C02(EEPROM)芯片内的值,掉电时都不会丢失。大家可以使用一个短接片将对应的 IIC 模拟 IO 口短接,重启下系统,这个时候就会看到初始化时会报“AT24C02 检测不正常!”(注意还是要按照前面操作串口助手的方法才能看到)。

收藏 评论0 发布时间:2022-6-27 10:35

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版