STM32F103微控制器RTC結合time h使用

2021-07-28 13:58:17 字數 1756 閱讀 8527

在使用stm32f103系列微控制器的時候總是會碰到rtc計時的問題,103系列微控制器的rtc使用的是秒計時

在經過一段時間的研究,終於發現了一種比較簡單而且易於理解的使用方法,就是結合系統檔案time.h的使用

首先要新增標頭檔案

#include

rtc的初始化和普通方式無區別

u8 rtc_init(void)

rcc_rtcclkconfig(rcc_rtcclksource_lse); //設定rtc時鐘(rtcclk),選擇lse作為rtc時鐘

rcc_rtcclkcmd(enable); //使能rtc時鐘

rtc_waitforlasttask(); //等待最近一次對rtc暫存器的寫操作完成

rtc_waitforsynchro(); //等待rtc暫存器同步

rtc_itconfig(rtc_it_sec, enable); //使能rtc秒中斷

rtc_waitforlasttask(); //等待最近一次對rtc暫存器的寫操作完成

rtc_enterconfigmode(); //允許配置

rtc_setprescaler(32767); //設定rtc預分頻的值

rtc_waitforlasttask(); //等待最近一次對rtc暫存器的寫操作完成

clock_settime(2015,1,14,17,42,55); //設定時間

rtc_exitconfigmode(); //退出配置模式

bkp_writebackupregister(bkp_dr1, 0x5aa5); //向指定的後備暫存器中寫入使用者程式資料

}else

//如果已配置過則不再進行配置

rtc_nvic_config(); //rct中斷分組設定

clock_get(); //更新時間

return

0;}

設定時間和讀取時間採用結構體的方式

首先需要定義乙個時間結構體

typedef struct 

_calendar_obj;

_calendar_obj calendar;//時鐘結構體

在設定時間時

oid clock_settime(u16 syear,u8 smon,u8 sday,u8 hour,u8 min,u8 sec)

}

讀取時間

void clock_get(void)

開啟秒中斷

void rtc_irqhandler(void)

rtc_clearitpendingbit(rtc_it_sec|rtc_it_ow);//清鬧鐘中斷

rtc_waitforlasttask();

}

STM32F103微控制器生成16路PWM波

微控制器輸出pwm波在專案中是恨常用的乙個功能,今天就總結一下用stm32f103c8t6微控制器輸出16路 pwm波。使用keil5軟體,用標準庫函式來實現。首先看定時器初始化 void tim1 pwm init u16 arr,u16 psc 初始化定時1的4個通道,對應io口為 pa8,pa...

解決STM32F103微控制器PB4無法拉低的問題

最近使用stm32f103的微控制器,pb4接了乙個led燈,低電平點亮,發現程式沒有辦法拉低pb4。而同樣電路的pb5 就能輸出低電平。通過檢視資料手冊,發現pb4預設是jtag引腳,並置於上拉模式,所以沒法直接當做普通的io口拉低。rcc apb2periphclockcmd rcc apb2p...

stm32f103外部中斷

void extix init void 外部中斷0服務程式 void exti9 5 irqhandler void 這是簡單的外部中斷的配置,pc7作為中斷輸入 上面補充io口的初始化 gpio initstructure.gpio mode gpio mode ipu pc6配置為快充指示 1...