标签:闹钟中断 ext 通信速度 reg 初始化 匹配 标识 断线 定时
时间在计算机系统中是一个非常重要的参数,在很多应用场景下都需要使用时间。RTC就是一个专门记录时间的设备,本质上是一个1Hz定时器。
为了计时准确,计时系统掉电也要能够正常计时。为了到达这个目的,RTC需要独立的时钟源,独立的供电电源
stm32f407的RTC的时钟源是低速晶振(LSE---32.768KHz),使用纽扣电池单独供电
RTC进行2次预分频,一次7位异步和15位的同步,最终得到1hz的时钟,为了降低功耗,异步预分频器尽量设置较大的值
RTC的中断属于外部中断,按照外部中断的方法配置
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);
PWR_BackupAccessCmd(ENABLE);
RCC_LSEConfig(RCC_LSE_ON);//使能LSE时钟
while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)!=SET);//等待LSE就绪
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//选择LSE作为RTC时钟源
RCC_RTCCLKCmd(ENABLE);//使能RTC时钟
RTC_WaitForSynchro();
ErrorStatus RTC_Init(RTC_InitTypeDef* RTC_InitStruct)
typedef struct |
ErrorStatus RTC_SetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
typedef struct uint8_t RTC_Minutes; /*!<
分 */ uint8_t RTC_H12;
/*!< 上午/下午 AM/PM @ref
RTC_AM_PM_Definitions */ |
ErrorStatus RTC_SetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct)
typedef struct uint8_t
RTC_Date; /*!< 日 */ |
RTC_WriteBackupRegister(RTC_BKP_DR0, 0x8888);
void RTC_GetTime(uint32_t RTC_Format, RTC_TimeTypeDef* RTC_TimeStruct)
void RTC_GetDate(uint32_t RTC_Format, RTC_DateTypeDef* RTC_DateStruct)
void RTC_SetAlarm(uint32_t RTC_Format, uint32_t RTC_Alarm, RTC_AlarmTypeDef* RTC_AlarmStruct)
参数:
RTC_Format - 时间格式(RTC_Format_BCD)
RTC_Alarm - 哪个闹钟(RTC_Alarm_A)
RTC_AlarmStruct - 闹钟时间结构体
typedef struct uint32_t RTC_AlarmMask; /*!< 闹钟时间中要屏蔽的成员 */ uint32_t
RTC_AlarmDateWeekDaySel; /*!< 选择星期匹配/日期匹配 @ref RTC_AlarmDateWeekDay_Definitions */ |
RTC_ClearITPendingBit(RTC_IT_ALRA);
RTC_ITConfig(RTC_IT_ALRA, ENABLE);
EXTI_Init(.....);
NVIC_Init(...);
RTC_AlarmCmd(RTC_Alarm_A, ENABLE);
IIC(I2C)属于两线式串行总线,由飞利浦公司开发用于微控制器和外围设备进行通信一种总线(板间通信)
IIC由数据线(SDA)和时钟线(SCL)组成的串行总线,可用于发送和接收数据,属于半双工通信,IIC通信速度为 100Kbps(400Kbps)
IIC通信除了SCL和SDA以外,一般还有电源线(VCC)和地(GND)。IIC属于一主多从的总线结构(一个主设备(Master),多个从设备(slave))
通信由主设备发起,从设备被动响应,实现数据传输
用来区分总线上不同的从设备,从设备地址有固定部分和可配置部分
SCL保持高电平,SDA由高向低跳变
SCL保持高电平,SDA由低向高跳变
发送方每发送一个字节(8位),在第9个时钟周期释放数据线,接收对方的应答
有效应答为低电平(ACK),表示对方接收成功;无效应答为高电平(NACK),表示对方没有接收成功
由SCL和SDA配合实现的,在SCL为高电平期间,保持SDA数据稳定(这段时间是对方读取数据时间)
在SCL为低电平期间,可以改变SDA的电平(这段时间是设置要发送的数据时间)
在IIC参考时钟的控制下,按照上述方法一位一位一次发送每一位数据
1表示读,0表示写
如果芯片上没有IIC控制器,或者控制接口不够用,使用IO口模拟实现IIC通信协议
手动控制IO口,实现IIC的信号和数据传输
IIC控制器将IIC协议中的固定部分实现,我们只需要将IIC协议中的可变部分(从设备地址 数据)提供给控制器
控制器自动按照IIC协议实现传输
at24c02是一种eeprom,电擦除的存储芯片,存储的数据掉电不丢失,实际应用中用来存储版本信息,更新信息等等
从设备地址
1010000 = 0x50
写操作
读操作
标签:闹钟中断 ext 通信速度 reg 初始化 匹配 标识 断线 定时
原文地址:https://www.cnblogs.com/zjlbk/p/11552397.html