iic调试软件上时钟芯片测试,stm32模拟IIC驱动RX8025时钟芯片C语言参考程序

该博客提供了一段C语言代码,用于使用STM32模拟IIC协议来驱动RX8025时钟芯片。内容包括配置IIC总线、产生起始和停止信号、读写数据的函数,以及针对RX8025的写入和读取数据的函数。
摘要由CSDN通过智能技术生成

/* Includes--------------------------------------------------------------*/

//#include        "sysconfig.h"

#include "stm32f10x.h"

//#include        "bsp_SIIC.h"

#include "bsp_RX8025.h"

/*

Private define-----------------------------------------------------------------------------*/

// 设备读写地址

#define        RX8025_ADDR_READ                0x65

#define        RX8025_ADDR_WRITE                0x64

// 设备寄存器地址

#define        RX8025_ADDR_SECONDS                0x00

#define        RX8025_ADDR_WEEK                0x30

#define        RX8025_ADDR_DATES                0x40

#define        RX8025_ADDR_MONTH                0x50

#define        RX8025_ADDR_MINUTES                0x80

#define        RX8025_ADDR_CONTROL1        0xE0

#define        RX8025_ADDR_CONTROL2        0xF0

// 设备操作模式

#define        RX8025_WRITE_MODE                0xF0

#define        RX8025_READ_MODE                0xF0

#define        RX8025_SIMP_READ_MODE        0x04

#define u8BAND(addr, u8num) ((addr & 0xF0000000)+0x2000000+((addr &0xFFFFF)<<5)+(u8num<<2))

#define MEM_ADDR(addr)  *((volatile unsigned long  *)(addr))

#define u8_ADDR(addr, u8num)   MEM_ADDR(u8BAND(addr, u8num))

//IO口地址映射

#define GPIOA_ODR_Addr    (GPIOA_BASE+12) //0x4001080C

#define GPIOB_ODR_Addr    (GPIOB_BASE+12) //0x40010C0C

#define GPIOC_ODR_Addr    (GPIOC_BASE+12) //0x4001100C

#define GPIOD_ODR_Addr    (GPIOD_BASE+12) //0x4001140C

#define GPIOE_ODR_Addr    (GPIOE_BASE+12) //0x4001180C

#define GPIOF_ODR_Addr    (GPIOF_BASE+12) //0x40011A0C

#define GPIOG_ODR_Addr    (GPIOG_BASE+12) //0x40011E0C

#define GPIOA_IDR_Addr    (GPIOA_BASE+8) //0x40010808

#define GPIOB_IDR_Addr    (GPIOB_BASE+8) //0x40010C08

#define GPIOC_IDR_Addr    (GPIOC_BASE+8) //0x40011008

#define GPIOD_IDR_Addr    (GPIOD_BASE+8) //0x40011408

#define GPIOE_IDR_Addr    (GPIOE_BASE+8) //0x40011808

#define GPIOF_IDR_Addr    (GPIOF_BASE+8) //0x40011A08

#define GPIOG_IDR_Addr    (GPIOG_BASE+8) //0x40011E08

//IO口操作,只对单一的IO口!

//确保n的值小于16!

#define PAout(n)   u8_ADDR(GPIOA_ODR_Addr,n)  //输出

#define PAin(n)    u8_ADDR(GPIOA_IDR_Addr,n)  //输入

#define PBout(n)   u8_ADDR(GPIOB_ODR_Addr,n)  //输出

#define PBin(n)    u8_ADDR(GPIOB_IDR_Addr,n)  //输入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值