ARM32开发--IIC时钟案例

知不足而奋进 望远山而前行


目录

文章目录

前言

目标

内容

需求

开发流程

移植驱动

修改I2C实现

测试功能

总结


前言

在现代嵌入式系统开发中,移植外设驱动并测试其功能是一项常见的任务。本次学习的目标是掌握移植方法和测试方法,以实现对开发板中的PCF8563实时时钟(RTC)的设置和读取功能。通过以下开发流程,我们将逐步完成移植驱动、修改I2C实现以及测试功能的过程。


目标

  1. 掌握移植方法
  2. 掌握测试方法

内容

需求

开发板中的PCF8563的RTC时钟设置和读取。

开发流程

  1. 移植驱动
  2. 修改I2C实现
  3. 测试功能
移植驱动
  1. PCF8563.hPCF8563.c拷贝到Hardwarepcf8563目录中。
  2. Hardware/pcf8563目录添加到include path
  3. keil中,将PCF8563.hPCF8563.c添加到Hardwaregroup中。
修改I2C实现
  1. 修改include

    #include "config.h"
    #include "I2C.h"

    #include "gd32f4xx.h"
    #include "I2C_soft.h"

    #ifndef u8
    #define u8 uint8_t
    #endif

    #ifndef u16
    #define u16 uint16_t
    #endif

  2. 读写操作修改

    // I2C写操作
    #define I2C_WRITE(a, r, p, n) I2C_WriteNbyte(a, r, p, n)
    // I2C读操作
    #define I2C_READ(a, r, p, n) I2C_ReadNbyte(a, r, p, n)

    // I2C写操作
    #define I2C_WRITE(a, r, p, n) I2C_soft_write(a, r, p, n)
    // I2C读操作
    #define I2C_READ(a, r, p, n) I2C_soft_read(a, r, p, n)

测试功能
  1. 初始化

    #include "SoftI2C.h"
    #include "PCF8563.h"

    SoftI2C_init();
    PCF8563_init();

  2. 设置时间

    Clock_t c;
    c.year = 2023;
    c.month = 8;
    c.day = 14;
    c.week = 5;
    c.hour = 23;
    c.minute = 59;
    c.second = 55;

    PCF8563_set_clock(c);

  3. 读取时间

    PCF8563_get_clock(&c);
    printf("%d-%d-%d %d %d:%d:%d\r\n", c.year, c.month, c.day, c.week, c.hour, c.minute, c.second);


总结

通过本次学习,我们成功地掌握了移植外设驱动和测试功能的方法。首先,我们将PCF8563驱动文件拷贝到适当的目录,并进行相关的配置和添加。接着,我们修改了I2C实现,以适配开发板的需求。最后,我们通过初始化、设置时间和读取时间等步骤,成功测试了PCF8563的功能。这一过程不仅加深了我们对嵌入式系统开发的理解,也提升了我们在实际项目中处理外设驱动的能力。

相关推荐
小石(努力版)2 小时前
嵌入式STM32学习——外部中断EXTI与NVIC的基础练习⭐
stm32·单片机·学习
檀越剑指大厂3 小时前
T-BOX硬件方案深度解析:STM32与SD NAND Flash存储的完美搭配
stm32·单片机·嵌入式硬件
7yewh3 小时前
MCU程序加密保护(一)闪存读写保护法 加密与解密
单片机·嵌入式硬件
不脱发的程序猿3 小时前
如何优化MCU中断响应时间
单片机·嵌入式硬件·rtos
平凡灵感码头4 小时前
基于智能家居项目 实现DHT11驱动源代码
stm32·单片机·智能家居
搬砖的小码农_Sky4 小时前
FPGA:XILINX FPGA产品线以及器件选型建议
嵌入式硬件·fpga开发·硬件架构·硬件工程
道亦无名4 小时前
STM32H743输出50%的占空比波形
stm32·单片机·嵌入式硬件
小智学长 | 嵌入式4 小时前
单片机-STM32部分:10、串口UART
stm32·单片机·嵌入式硬件
猎板阿权5 小时前
出于PCB设计层面考虑,连排半孔需要注意哪些事项?
单片机·物联网·平面
#金毛5 小时前
如何使用C51的Timer0实现定时功能
单片机·嵌入式硬件