標(biāo)題:
STM32調(diào)試時(shí)鐘芯片SD3078源程序
[打印本頁(yè)]
作者:
chgach
時(shí)間:
2019-7-8 10:43
標(biāo)題:
STM32調(diào)試時(shí)鐘芯片SD3078源程序
STM32調(diào)試時(shí)鐘芯片SD3078程序
單片機(jī)源程序如下:
#include "stm32f10x.h"
#include "bsp_usart1.h"
#include "rtc.h"
#include <string.h>
/****************** 本地變量 **********************/
u8 data_Buf[8];
u8 VBAT_Buf[2];
u16 VBAT_VAL;
Time_Def time_init={0x01,0x19,0x17,0x05,0x17,0x06,0x16}; //初始化實(shí)時(shí)時(shí)間
Time_Def Alarm_init={0x30,0x19,0x17,0x00,0x15,0x08,0x18}; //初始化報(bào)警時(shí)間
Time_Def sysTime;
/***************** 本地函數(shù)聲明 *******************/
void Delay(u32 nCount);
/**
* @brief 主函數(shù)
* @param 無(wú)
* @retval 無(wú)
*/
int main(void)
{
u8 i;
CountDown_Def cdInit;
/********* USART1 配置模式為 115200 8-N-1**********/
USARTx_Config();
printf("\r\n--這是一個(gè)讀寫(xiě)RTC的演示程序-- \r\n");
/***************** I2C總線初始化 *****************/
IIC_Init();
/************* 給RTC寫(xiě)入計(jì)時(shí)的初始時(shí)間 ************/
RTC_WriteDate(&time_init);
RTC_ReadDate(&sysTime);
printf("寫(xiě)入的初始時(shí)間為: \r\n");
printf("%02X-%02X-%02X %02X:%02X:%02X 星期%02X\r\n\r\n", \
sysTime.year, sysTime.month, sysTime.day, sysTime.hour,\
sysTime.minute, sysTime.second, sysTime.week);
printf("----------------------------\r\n\r\n");
#ifdef SD30XX_25XX
/*************** 讀出芯片的ID號(hào)演示 ****************/
I2CReadSerial(RTC_Address,ID_Address,8,data_Buf);
printf("芯片64bit ID號(hào)為:\r\n");
for (i=0; i<8; i++)
printf("0x%02X ", data_Buf[i]);
printf("\r\n----------------------------\r\n\r\n");
/**************** 充電使能設(shè)置演示 *****************/
data_Buf[0] = Chg_enable;
I2CWriteSerial(RTC_Address,Chg_MG,1,data_Buf);
/************** 讀出后備電池電壓演示 ***************/
I2CReadSerial(RTC_Address,Bat_H8,2,VBAT_Buf);
VBAT_VAL = (VBAT_Buf[0]>>7)*255 + VBAT_Buf[1];
printf("VBAT腳的電池電壓為:%d.%d%dV\r\n\r\n", VBAT_VAL/100, VBAT_VAL%100/10, VBAT_VAL%10);
#endif
#if (INT_TYPE == FREQUENCY)
/**************** 頻率中斷設(shè)置演示 ****************/
SetFrq(F2Hz);//輸出2Hz頻率方波
#elif (INT_TYPE == ALARM)
/**************** 報(bào)警中斷設(shè)置演示 ****************/
Set_Alarm(sec_ALM|min_ALM|hor_ALM, &Alarm_init);//報(bào)警使能:時(shí)、分、秒
#elif (INT_TYPE == COUNTDOWN)
/*************** 倒計(jì)時(shí)中斷設(shè)置演示 ***************/
cdInit.IM = 1; //設(shè)置為周期性中斷
cdInit.d_clk = S_1s; //倒計(jì)時(shí)中斷源選擇1s
cdInit.init_val = 2; //倒計(jì)時(shí)初值設(shè)置為2
Set_CountDown(&cdInit);
#elif (INT_TYPE == DISABLE)
/****************** 禁止中斷演示 *****************/
ClrINT(INTDE|INTAE|INTFE);
#endif
while( 1 )
{
RTC_ReadDate(&sysTime);
printf("%02X-%02X-%02X %02X:%02X:%02X 星期%02X\r\n", \
sysTime.year, sysTime.month, sysTime.day, sysTime.hour,\
sysTime.minute, sysTime.second, sysTime.week);
Delay(0x7FFFFF);//1秒延時(shí)
}
}
/**
* @brief 延時(shí)函數(shù)
* @param nCount
* @retval 無(wú)
*/
void Delay(u32 nCount) //簡(jiǎn)單的延時(shí)函數(shù)
{
for(; nCount != 0; nCount--);
}
/*********************************************END OF FILE**********************/
復(fù)制代碼
所有資料51hei提供下載:
RTC_STM32_demo.7z
(178.6 KB, 下載次數(shù): 119)
2019-7-8 17:45 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
shanlxw
時(shí)間:
2019-10-16 22:48
非常感謝,有些作用
作者:
shltoly
時(shí)間:
2021-8-5 12:51
我日期讀出來(lái)都是o咋整啊
作者:
mengsiu
時(shí)間:
2022-6-3 23:50
差評(píng)。!
這不就是官網(wǎng)上的例程嗎?我還以為是原創(chuàng)的呢。
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1