娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)RTC 模塊介紹

發(fā)布者:meirong最新更新時間:2024-10-29 來源: elecfans關(guān)鍵字:GD32  MCU  外設(shè)  RTC  模塊 手機看文章 掃描二維碼
隨時隨地手機看文章

GD32 MCU內(nèi)部提供了一個RTC(實時時鐘)模塊,通過RTC可以實現(xiàn)日歷時鐘、鬧鐘等功能。RTC也可以用于深度睡眠或待機模式的低功耗喚醒。不同系列的GD32 MCU在RTC設(shè)計和功能上有所區(qū)別,總體可以分為三大系列:

(1)F10x、F30x、E10x系列RTC功能基本相同,后文簡稱0x系列。

(2)F1x0、F3x0、E23x系列RTC功能基本相同,后文簡稱x0系列。

(3)F405、F407、F450系列RTC功能基本相同,后文簡稱4xx系列。后文會對0x系列、x0系列、4xx系列的RTC模塊分別進行介紹,簡單介紹RTC的工作原理、配置使用方法。

14.1.GD32 RTC 外設(shè)簡介

0x 系列 RTC

0x系列RTC整體架構(gòu)相對精簡,主要依靠32位累加計數(shù)器配置分頻實現(xiàn)時鐘計數(shù)。日歷功能可通過軟件計算并寫入備份域中實現(xiàn);同時具有鬧鐘功能可用于定時產(chǎn)生中斷和喚醒喚醒事件;RTC的核心計數(shù)部分在備份域中,可在VDD斷電時VBAT供電的情況保持RTC的計數(shù),正常上電工作時通過APB總線接口可對RTC寄存器進行配置。

0x系列RTC主要特點:

? 32位可編程計數(shù)器,用于計數(shù)運行時間

– 可編程的預(yù)分頻器: 分頻系數(shù)最高可達220

? 獨立時鐘域:

– PCLK1時鐘域

– RTC時鐘域(該時鐘必須比PCLK1時鐘至少慢4倍)

? RTC時鐘源:

– HXTAL時鐘分頻

– LXTAL振蕩電路時鐘

– IRC40K振蕩電路時鐘

? 可屏蔽的中斷源:

– 鬧鐘中斷

– 秒中斷

– 溢出中斷

0x系列RTC框圖介紹:

RTC由兩個主要部分組成,如下圖0x系列RTC結(jié)構(gòu)框圖所示,位于PCLK1時鐘域的APB接口和位于RTC時鐘域的RTC內(nèi)核。

輸入圖片說明

第一部分APB接口用來和APB1總線相連。此單元還包含一組16位寄存器,可通過APB1總線對其進行讀寫操作。對RTC模塊進行相關(guān)配置。

另一部分(RTC核心)由一組可編程計數(shù)器組成,分成兩個主要模塊。第一個模塊是RTC的預(yù)分頻模塊,RTC時鐘源輸入后經(jīng)過預(yù)分頻模塊,可編程產(chǎn)生RTC時間基準SC_CLK。RTC的預(yù)分頻模塊包含了一個20位的可編程分頻器(RTC預(yù)分頻器);如果在RTC_INTEN寄存器中設(shè)置了相應(yīng)的允許位,則在每個SC_CLK周期中RTC產(chǎn)生一個中斷(秒中斷)。

第二個模塊是一個32位的可編程計數(shù)器,可被初始化為當前的系統(tǒng)時間。系統(tǒng)時間按SC_CLK周期累加并與存儲在RTC_ALRM寄存器中的可編程時間相比較,如果RTC_INTEN控制寄存器中設(shè)置了相應(yīng)允許位,比較匹配時將產(chǎn)生一個鬧鐘中斷。

x0 系列 RTC

0x系列RTC提供了一個包含日期(年/月/日)和時間(時/分/秒/亞秒)的日歷功能。除亞秒用二進制碼顯示外,時間和日期都以BCD碼的形式顯示。RTC可以進行夏令時補償。RTC可以工作在省電模式下,并通過軟件配置來智能喚醒。RTC支持外接更高精度的低頻時鐘,用以達到更高的日歷精度。

x0系列RTC主要特點:

? 通過軟件設(shè)置來實現(xiàn)夏令時補償。

? 參考時鐘檢測功能:通過外接更高精度的低頻率時鐘源(50Hz/60Hz)來提高日歷精度。

? 數(shù)字校準功能:通過調(diào)整最小時間單位(最大可調(diào)精度0.95ppm)來進行日歷校準。

? 通過移位功能進行亞秒級調(diào)整。

? 記錄事件時間的時間戳功能。

? 兩個模式可配置的獨立的侵入檢測。

? 可編程的日歷和一個位域可屏蔽的鬧鐘。

? 5個32位(共20字節(jié))通用備份寄存器,能夠在省電模式下保存數(shù)據(jù)。當有外部事件侵入時,備份寄存器將會復(fù)位。

? 可屏蔽的中斷源:

– 鬧鐘0;

– 時間戳檢測;

– 侵入檢測;

x0系列RTC框圖介紹:

x0系列RTC工作在備份域,可在低功耗模式下保持工作,通過APB總線可對RTC寄存器進行讀取和配置。如下圖x0系列RTC結(jié)構(gòu)框圖所示,RTC時鐘源可配置通過數(shù)字平滑校準或直接輸入到7位異步預(yù)分頻器輸出ck_apre時鐘用于RTC_SS亞秒寄存器自減計數(shù),ck_apre時鐘又經(jīng)過15位同步預(yù)分頻器后輸出1HZ的ck_spre時鐘提供日歷寄存器使用;基于日歷寄存器還實現(xiàn)了鬧鐘和時間戳功能;RTC還具有鬧鐘、時鐘輸出功能,對RTC_TS、RTC_TAMP0、RTC_TAMP1引腳的有效輸入可觸發(fā)時間戳和侵入事件并產(chǎn)生中斷。侵入事件會將備份域復(fù)位。

輸入圖片說明

? 鬧鐘

RTC鬧鐘功能被劃分為多個位域并且每一個位域有一個該域的可屏蔽位。屏蔽某些位域后可固定周期產(chǎn)生鬧鐘事件。

? 侵入事件

RTC_TAMPx管腳可以作為侵入事件檢測功能輸入管腳,檢測模式有兩種可供用戶選擇:邊沿檢測模式或者是帶可配置濾波功能的電平檢測模式。侵入事件會將備份域復(fù)位,可產(chǎn)生一個中斷。

? 可選的RTC輸出功能:

512Hz( 默認預(yù)分頻值): RTC_OUT;

1Hz( 默認預(yù)分頻值): RTC_ OUT;

鬧鐘事件( 極性可配置): RTC_ OUT。

? 可選的RTC輸入功能:

時間戳事件檢測( RTC_TS);

侵入事件檢測 0( RTC_TAMP0);

侵入事件檢測 1( RTC_TAMP1);

參考時鐘輸入 RTC_REFIN( 50 或 60Hz)。

? RTC中斷

所有的RTC中斷(鬧鐘、時間戳、侵入事件)都被連接到EXTI控制器。

4xx 系列 RTC 4xx系列RTC在x0系列RTC的基礎(chǔ)上做了部分功能的升級。提供了一個包含日期(年/月/日)和時間(時/分/秒/亞秒)的日歷功能。除亞秒用二進制碼顯示外,時間和日期都以BCD碼的形式顯示。

RTC可以進行夏令時補償。RTC可以工作在省電模式下,并通過軟件配置來智能喚醒。RTC支持外接更高精度的低頻時鐘,用以達到更高的日歷精度。

  1. 4xx系列RTC主要特點:

? 通過軟件設(shè)置來實現(xiàn)夏令時補償。

? 參考時鐘檢測功能:通過外接更高精度的低頻率時鐘源(50Hz或60Hz)來提高日歷精度。

? 數(shù)字校準功能:通過調(diào)整最小時間單位(最大可調(diào)精度0.95ppm)來進行日歷校準。

? 通過移位功能進行亞秒級調(diào)整。

? 記錄事件時間的時間戳功能。

? 兩個模式可配置的獨立的侵入檢測。

? 可編程的日歷和一個位域可屏蔽的鬧鐘。

? 20個32位(共80字節(jié))通用備份寄存器,能夠在省電模式下保存數(shù)據(jù)。當有外部事件侵入時,備份寄存器將會復(fù)位。

? 可屏蔽的中斷源:

– 鬧鐘0和鬧鐘1;

– 時間戳檢測;

– 自動喚醒事件;

– 侵入檢測;

? 可配置周期的自動喚醒定時器

4xx系列RTC框圖介紹:

4xx系列RTC工作在備份域,可在低功耗模式下保持工作,通過APB總線可對RTC寄存器進行讀取和配置。如下圖4xx系列RTC結(jié)構(gòu)框圖所示,RTC時鐘源可配置通過數(shù)字平滑校準或直接輸入到7位異步預(yù)分頻器輸出ck_apre時鐘用于RTC_SS亞秒寄存器自減計數(shù),ck_apre時鐘又可通過數(shù)字粗平滑校準或直接輸入15位同步預(yù)分頻器后輸出1HZ的ck_spre時鐘提供日歷寄存器使用;基于日歷寄存器還實現(xiàn)了鬧鐘和時間戳功能;RTC還具有鬧鐘、時鐘輸出功能,對RTC_TS、RTC_TAMP0、RTC_TAMP1引腳的有效輸入可觸發(fā)時間戳和侵入事件并產(chǎn)生中斷。侵入事件會將備份域復(fù)位。4xx系列RTC有一個獨立的自動重加載喚醒定時器可用于產(chǎn)生喚醒事件和中斷。

輸入圖片說明

? 鬧鐘

RTC鬧鐘功能被劃分為多個位域并且每一個位域有一個該域的可屏蔽位。屏蔽某些位域后可固定周期產(chǎn)生鬧鐘事件。

? 侵入事件

RTC_TAMPx管腳可以作為侵入事件檢測功能輸入管腳,檢測模式有兩種可供用戶選擇:邊沿檢測模式或者是帶可配置濾波功能的電平檢測模式。侵入事件會將備份域復(fù)位,可產(chǎn)生一個中斷。

? 可選的RTC輸出功能:

512Hz(默認預(yù)分頻值):(RTC_OUT)PC13

1Hz(默認預(yù)分頻值):(RTC_OUT)PC13

鬧鐘事件(極性可配置):(RTC_OUT)PC13

自動喚醒事件(極性可配置):(RTC_OUT)PC13

? 可選的RTC輸入功能:

時間戳事件檢測(RTC_TS):RTC_AF0、RTC_AF1;

侵入事件檢測 0(RTC_TAMP0):RTC_AF0、RTC_AF1;

侵入事件檢測 1(RTC_TAMP1):RTC_AF1;

參考時鐘輸入 RTC_REFIN(50或60Hz)。

? RTC中斷

所有的RTC中斷(鬧鐘0、鬧鐘1、喚醒、時間戳、侵入0、侵入1)都被連接到EXTI控制器。

各系列 RTC 模塊功能對比

x0系列中的E23x系列均沒有VBAT引腳,不支持VDD掉電保持RTC工作。

0x系列備份域不同于x0、4xx系列,為單獨的一個外設(shè)模塊,所以使用RTC時,0x系列相比x0系列和4xx系列還需使能BKP的時鐘。

各系列 RTC 模塊功能對比

輸入圖片說明

14.2.GD32 RTC 硬件設(shè)計

? Vbat電源設(shè)計

Vbat可以連接至外部電池,在Vdd掉電時可以保證備份域不掉電、RTC繼續(xù)運行。VBAT引腳需要對GND連接0.1uF電容,如果沒有外部電池需要將VBAT和一個0.1uF電容連接至Vdd電源上。

輸入圖片說明

? RTC_TAMPx引腳

入侵事件會導(dǎo)致備份域復(fù)位,如使用該功能需注意檢測引腳的濾波,可在RTC_TAMPx引腳上并聯(lián)0.1uf電容。

14.3.GD32 RTC 軟件配置

GD32MCU_Example下的RTC_Example例程配置了日歷和鬧鐘功能,并開啟了鬧鐘中斷。本小節(jié)講解RTC_Example例程中RTC模塊的配置說明,主要包括時鐘及分頻配置、日歷配置、鬧鐘配置、主函數(shù)說明。本例程主要介紹GD32 MCU各系列RTC模塊的時間、鬧鐘配置,有關(guān)RTC其他功能例程可參考各系列固件庫例程。

時鐘及分頻配置

? 由于RTC工作在備份域,所以使用RTC時需要使能備份域?qū)懝δ埽刂苽浞萦驅(qū)懝δ艿募拇嫫魑挥赑MU中,所以操作RTC還需要將PMU_CTL寄存中的BKPWEN置位,從而還需使能PMU的時鐘。而對于0x系列備份域為單獨的外設(shè),還需額外使能BKP備份域時鐘。

? 為了實現(xiàn)準確的日歷功能,配置RTC前需要準備好需要的時鐘源,在選擇合適的時鐘源后RTC還需要進行預(yù)分頻的配置。

0x系列時鐘及分頻配置如代碼清單 RTC 0x系列時鐘及分頻配置所示,RTC使能后需要等待RTC寄存器和APB1時鐘同步,執(zhí)行rtc_register_sync_wait()函數(shù);此外0x系列RTC在RTC寄存器配 置時需要等待上一次配置結(jié)束才能繼續(xù)新的配置,所以在每個寄存器配置前需要執(zhí)行rtc_lwoff_wait()函數(shù),等待LWOFF置位。

代碼清單 RTC 0x 系列時鐘及分頻配置

void rtc_config(void) { uint32_t prescaler=0; /* enable PMU and BKPI clocks */ rcu_periph_clock_enable(RCU_BKPI); rcu_periph_clock_enable(RCU_PMU); /* allow access to BKP domain */ pmu_backup_write_enable(); #if RTC_CLOCK_SOURCE_IRC40K prescaler=40000; /* enable LXTAL */ rcu_osci_on(RCU_IRC40K); /* wait till LXTAL is ready */ rcu_osci_stab_wait(RCU_IRC40K); /* select RCU_LXTAL as RTC clock source */ rcu_rtc_clock_config(RCU_RTCSRC_IRC40K); #elif RTC_CLOCK_SOURCE_LXTAL prescaler=32767; /* enable LXTAL */ rcu_osci_on(RCU_LXTAL); /* wait till LXTAL is ready */ rcu_osci_stab_wait(RCU_LXTAL); /* select RCU_LXTAL as RTC clock source */ rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); #else #error RTC clock source should be defined. #endif /* RTC_CLOCK_SOURCE_IRC40K */ /* enable RTC Clock */ rcu_periph_clock_enable(RCU_RTC); /* wait for RTC registers synchronization */ rtc_register_sync_wait(); /* wait until last write operation on RTC registers has finished */ rtc_lwoff_wait(); /* set RTC prescaler: set RTC period to 1s */ rtc_prescaler_set(prescaler); rtc_lwoff_wait(); rtc_interrupt_enable(RTC_INT_ALARM); rtc_lwoff_wait(); }

x0系列時鐘及分頻配置如代碼清單 RTC x0系列時鐘及分頻配置所示,RTC使能后需要等待RTC寄存器和APB1時鐘同步,執(zhí)行rtc_register_sync_wait()函數(shù);和0x系列不同,后續(xù)配置過程x0和4xx系列均不需要執(zhí)行rtc_lwoff_wait()函數(shù)。

代碼清單 RTC x0 系列時鐘及分頻配置

void rtc_config(void) { /* enable PMU clock */ rcu_periph_clock_enable(RCU_PMU); /* enable the access of the RTC registers */ pmu_backup_write_enable(); #if (RTC_CLOCK_SOURCE_IRC40K) rcu_osci_on(RCU_IRC40K); rcu_osci_stab_wait(RCU_IRC40K); rcu_rtc_clock_config(RCU_RTCSRC_IRC40K); prescaler_s = 0x18F; prescaler_a = 0x63; #elif (RTC_CLOCK_SOURCE_LXTAL) rcu_osci_on(RCU_LXTAL); rcu_osci_stab_wait(RCU_LXTAL); rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); prescaler_s = 0xFF; prescaler_a = 0x7F; #else #error RTC clock source should be defined. #endif /* RTC_CLOCK_SOURCE_IRC40K */ rcu_periph_clock_enable(RCU_RTC); rtc_register_sync_wait(); rtc_interrupt_enable(RTC_INT_ALARM); }

4xx系列時鐘及分頻配置如代碼清單 RTC 4xx系列時鐘及分頻配置所示,和x0系列基本相同,但由于4xx系列內(nèi)部低速時鐘為32K,所以分頻系數(shù)和x0系列有所不同。

代碼清單 RTC 4xx 系列時鐘及分頻配置

void rtc_config(void) { /* enable PMU clock */ rcu_periph_clock_enable(RCU_PMU); /* enable the access of the RTC registers */ pmu_backup_write_enable(); #if (RTC_CLOCK_SOURCE_IRC32K) rcu_osci_on(RCU_IRC32K); rcu_osci_stab_wait(RCU_IRC32K); rcu_rtc_clock_config(RCU_RTCSRC_IRC32K); prescaler_s = 0x13F; prescaler_a = 0x63; #elif (RTC_CLOCK_SOURCE_LXTAL) rcu_osci_on(RCU_LXTAL); rcu_osci_stab_wait(RCU_LXTAL); rcu_rtc_clock_config(RCU_RTCSRC_LXTAL); prescaler_s = 0xFF; prescaler_a = 0x7F; #else #error RTC clock source should be defined. #endif /* RTC_CLOCK_SOURCE_IRC32K */ rcu_periph_clock_enable(RCU_RTC); rtc_register_sync_wait(); rtc_interrupt_enable(RTC_INT_ALARM0); }

日歷配置

0x系列由于沒有硬件日歷功能,所以需要讀取計數(shù)器通過軟件計算出日歷;而x0系列和4xx系列具有硬件日歷功能,日期信息均是BCD碼,所以在日歷配置的格式和方式均有差別。

0x系列RTC的日歷配置如代碼清單 RTC 0x系列日歷配置所示,該函數(shù)提供了日歷配置的入口參數(shù),先將需要配置的日歷信息轉(zhuǎn)換成秒單位,再寫入RTC計數(shù)器即可。入口參數(shù)使用十進制寫入。

代碼清單 RTC 0x 系列日歷配置

uint32_t rtc_time_set(uint16_t year, uint8_t month, uint8_t day, uint8_t hour, uint8_t minute, uint8_t second) { uint16_t t; uint32_t seccount = 0; if(year < 1970 || year > 2099) return ERROR; for(t = 1970; t < year; t++){ if(is_leap_year(t)){ seccount += 31622400; }else{ seccount += 31536000; } } month -= 1; for(t=0; t < month; t++){ seccount += (uint32_t)month_table[t] * 86400; if(is_leap_year(year) && t==1){ seccount+=86400; } } seccount += (uint32_t)(day-1) * 86400; seccount += (uint32_t)hour * 3600; seccount += second; rtc_lwoff_wait(); rtc_counter_set(seccount); rtc_lwoff_wait(); return SUCCESS; }

x0系列RTC的日歷配置如代碼清單 RTC x0系列日歷配置所示,該函數(shù)提供了日歷配置的入口參數(shù),參數(shù)為BCD碼格式,寫入后對RTC日歷結(jié)構(gòu)體賦初值,日歷結(jié)構(gòu)體還可以配置星期、時間格式等,這里默認配置了24小時制。函數(shù)入口參數(shù)使用16進制寫入。

代碼清單 RTC x0 系列日歷配置

uint32_t rtc_time_set(uint16_t year,uint8_t month,uint8_t day,uint32_t tmp_hh,uint32_t tmp_mm,uint32_t tmp_ss) { rtc_initpara.rtc_factor_asyn = prescaler_a; rtc_initpara.rtc_factor_syn = prescaler_s; rtc_initpara.rtc_year = year&0x00ff; rtc_initpara.rtc_day_of_week = RTC_SATURDAY; rtc_initpara.rtc_month = month; rtc_initpara.rtc_date = day; rtc_initpara.rtc_display_format = RTC_24HOUR; rtc_initpara.rtc_am_pm = RTC_AM; rtc_initpara.rtc_hour = tmp_hh; rtc_initpara.rtc_minute = tmp_mm; rtc_initpara.rtc_second = tmp_ss; if(ERROR == rtc_init(&rtc_initpara)){ return ERROR; } return SUCCESS; }

4xx系列RTC的日歷配置如代碼清單 0-52 RTC 4xx系列日歷配置所示,和x0系列基本相同, 唯一區(qū)別只是日歷結(jié)構(gòu)體成員名字少了“RTC_”的前綴。

代碼清單 RTC 4xx 系列日歷配置

uint32_t rtc_time_set(uint16_t year,uint8_t month,uint8_t day,uint32_t tmp_hh,uint32_t tmp_mm,uint32_t tmp_ss) { rtc_initpara.factor_asyn = prescaler_a; rtc_initpara.factor_syn = prescaler_s; rtc_initpara.year = year&0x00ff; rtc_initpara.day_of_week = RTC_SATURDAY; rtc_initpara.month = month; rtc_initpara.date = day; rtc_initpara.display_format = RTC_24HOUR; rtc_initpara.am_pm = RTC_AM; rtc_initpara.hour = tmp_hh; rtc_initpara.minute = tmp_mm; rtc_initpara.second = tmp_ss; if(ERROR == rtc_init(&rtc_initpara)){ return ERROR; } return SUCCESS; }

鬧鐘配置

0x系列的RTC通過32位計數(shù)器運行時間,所以其鬧鐘也是32位數(shù)據(jù),當計數(shù)器和鬧鐘值匹配時會產(chǎn)生鬧鐘事件或中斷,所需配置的鬧鐘值為鬧鐘剩余倒計時加上當前計數(shù)器值;而x0系列和4xx系列是硬件BCD日歷功能,所以其鬧鐘也是BDC格式,且具有位域屏蔽功能,根據(jù)需要直接配置具體的時間即可。

0x系列RTC的鬧鐘配置如代碼清單 RTC 0x系列鬧鐘配置所示,該函數(shù)提供了鬧鐘配置的入口參數(shù),先將需要配置的時間信息轉(zhuǎn)換成秒單位,再加上當前計數(shù)器的值寫入鬧鐘寄存器即可。

0x系列配置的鬧鐘參數(shù)為鬧鐘中斷的倒計時時間,寫入?yún)?shù)為十進制。

代碼清單 RTC 0x 系列鬧鐘配置

void rtc_alarm_set(uint8_t hour, uint8_t minute, uint8_t second) { alarm_second = 3600 * hour + minute * 60 + second; rtc_lwoff_wait(); rtc_alarm_config(rtc_counter_get() + alarm_second); rtc_lwoff_wait(); } seccount += (uint32_t)(day-1) * 86400; seccount += (uint32_t)hour * 3600; seccount += (uint32_t)minute * 60; seccount += second; rtc_lwoff_wait(); rtc_counter_set(seccount); rtc_lwoff_wait(); return SUCCESS; }

x0系列RTC的鬧鐘配置如代碼清單 RTC x0系列鬧鐘配置所示,該函數(shù)提供了鬧鐘配置的入口參數(shù),參數(shù)為BCD碼格式,寫入后對RTC鬧鐘結(jié)構(gòu)體賦初值,鬧鐘結(jié)構(gòu)體可以配置位域屏蔽、選擇配置日期或星期、時間格式等,這里默認配置了屏蔽天、小時、分鐘,所以配置最后實際生效的只有秒,所以配置后鬧鐘均是1分鐘產(chǎn)生一次。鬧鐘配置前需失能鬧鐘,配置后再使能,4xx系列配置的鬧鐘參數(shù)為鬧鐘產(chǎn)生的日期時間,因BCD格式寫入?yún)?shù)參數(shù)使用16進制。

[1] [2]
關(guān)鍵字:GD32  MCU  外設(shè)  RTC  模塊 引用地址:【GD32 MCU 入門教程】GD32 MCU 常見外設(shè)介紹(14)RTC 模塊介紹

上一篇:GD32芯片怎么樣?GD32芯片運行速度慢的原因
下一篇:GD32串口接收異常的幾個原因

推薦閱讀最新更新時間:2025-04-23 21:49

基于單片機的濕度檢測系統(tǒng)電路模塊設(shè)計
其工作原理是: 電容式相對濕度傳感器的容值隨著濕度的變化而線性的變化,通過信號檢測和轉(zhuǎn)換電路將變化的電容轉(zhuǎn)換成與之對應(yīng)的變化的電壓,再由A/D轉(zhuǎn)換器把模擬電壓信 號轉(zhuǎn)換為數(shù)字信號并送入到單片機中,單片機對采集到的信號進行濾波處理并通過查表得到實際測量的濕度值,之后通過單片機的各外部接口電路顯示該濕度值,或 通過其與上位機的接口把此值送入到上位機進行保存及打印等操作。 鍵盤控制電路設(shè)計 鍵盤電路是單片機應(yīng)用系統(tǒng)最常用的人機接口電路,用它可以完成濕度值的設(shè)定、移位、加1、減1、清零、前翻頁、和后翻頁等功能。但它往往要占用較多的 I/O端口。在本濕度檢測系統(tǒng)中,除了把一個獨立的按鍵用作開始鍵外,利用了一種新型的鍵盤電路,它可以最
[單片機]
基于<font color='red'>單片機</font>的濕度檢測系統(tǒng)電路<font color='red'>模塊</font>設(shè)計
51單片機外圍模塊——紅外通信
一. 什么是紅外線 人的眼睛能看到的可見光按波長從長到短排列,依次為紅、橙、黃、綠、青、藍、紫。其中紅光的波長范圍為0.62~0.76μm;紫光的波長范圍為0.38~0.46μm。比紫光波長還短的光叫紫外線,比紅光波長還長的光叫紅外線.紅外線遙控就是利用波長為0.76~1.5μm之間的近紅外線來傳送控制信號的。 二. 紅外線系統(tǒng)的組成 紅外線遙控器已被廣泛使用在各種類型的家電產(chǎn)品上,它的出現(xiàn)給使用電器提供了很多的便利。紅外線系統(tǒng)一般由紅外發(fā)射裝置和紅外接收設(shè)備兩大部分組成。紅外發(fā)射裝置又可由鍵盤電路、紅外編碼芯片、電源和紅外發(fā)射電路組成。紅外接收設(shè)備可由紅外接收電路、紅外解碼芯片、電源和應(yīng)用電路組成。通常為了使信號更好的被發(fā)射
[單片機]
51<font color='red'>單片機</font>外圍<font color='red'>模塊</font>——紅外通信
51單片機學習(二)74HC595模塊實現(xiàn)點陣屏
引言: 74HC595是一個實現(xiàn)串行轉(zhuǎn)并行功能的芯片,這也是我們51單片機學習接觸到的第一個通過控制時序線完成數(shù)據(jù)輸入輸出的芯片,這樣的芯片在以后會遇到很多,像是完成數(shù)據(jù)存儲的EEPROM需要用到的I2C協(xié)議,還有完成計時功能的時鐘DS1302,他們在與主機進行交互時必然需要數(shù)據(jù)的輸入和讀取,所以我們在輸入讀取時就需要控制幾根由引腳控制的總線,通過控制這些總線的電平變化,我們就可以完成數(shù)據(jù)輸入和讀取。這些都是我自己的理解,有錯誤的地方希望可以得到指正。 在此之前我先講一下在學習這些模塊中需要理解的一些知識: 總線:一般的我們會有幾根時鐘線,其中一根數(shù)據(jù)時鐘線負責暫時存放一位數(shù)據(jù),一根輸入時鐘線能將數(shù)據(jù)時鐘線的數(shù)據(jù)發(fā)送到
[單片機]
51<font color='red'>單片機</font>學習(二)74HC595<font color='red'>模塊</font>實現(xiàn)點陣屏
STM32系列里RTC的亞秒特性及功能(下)
我們回到前面提到的需求,每隔50±20ms做喚醒,即30ms~70ms范圍內(nèi)實現(xiàn)喚醒都可以接受。如果說使用ALARM中斷,相信很多人自然會想到,先設(shè)定一個ALARM點,等喚醒后再修改新的ALARM值,就這樣延續(xù)下去。 這樣操作也是可以的,即每次在ALARM中斷里修改新的ALARM時間點。下圖是對ALARM值進行編程的流程【設(shè)置時先要關(guān)閉ALARM,修改ALARM值后再手動開啟ALARM單元】: 不過,結(jié)合眼前的應(yīng)用需求,我們可以不使用上面的做法,而是巧妙地使用RTC亞秒特性來實現(xiàn)周期性的ALARM以滿足需求。怎么個巧法呢?一起來看看。 先假定RTCCLK為32768Hz,RTC同步分頻系數(shù)和異步分頻系數(shù)分別為如下參數(shù):
[單片機]
STM32基礎(chǔ)10--實時時鐘(RTC
前言 在做51單片機項目時,如果需要年月日時分秒的時間記錄,會在51單片機上面外掛一個DS1302的時鐘芯片,再加上時間芯片的外圍電路。但在STM32F407中,不再需要這么干了,因為在STM32的內(nèi)部就已經(jīng)集成了年月日時分秒的時鐘電路--也就是實時時鐘(RTC) RTC框圖 下圖是RTC的框圖,箭頭部分是實時時鐘基本部分,包括時鐘源,預(yù)分頻,影子寄存器,引腳復(fù)用輸出。此外還有兩個鬧鐘,周期喚醒,入侵檢測以及時間戳。 STM32實時時鐘電路 在開發(fā)板上有低速外部時鐘源-32.768Khz。 功能需要 1)配置當前時間 時間可以采取24小時格式,也可以采用12小時格式,默認采用24小時
[單片機]
STM32基礎(chǔ)10--實時時鐘(<font color='red'>RTC</font>)
STM32F4學習筆記10——RTC實時時鐘
RTC實時時鐘 實時時鐘 (RTC) 是一個獨立的 BCD 定時器/計數(shù)器。RTC 提供一個日歷時鐘、兩個可編程 鬧鐘中斷,以及一個具有中斷功能的周期性可編程喚醒標志。RTC 還包含用于管理低功耗模 式的自動喚醒單元。 兩個 32 位寄存器包含二進碼十進數(shù)格式 (BCD) 的秒、分鐘、小時(12 或 24 小時制)、星 期幾、日期、月份和年份。此外,還可提供二進制格式的亞秒值。 系統(tǒng)可以自動將月份的天數(shù)補償為 28、29(閏年)、30 和 31 天。并且還可以進行夏令時 補償。 其它 32 位寄存器還包含可編程的鬧鐘亞秒、秒、分鐘、小時、星期幾和日期。 此外,還可以使用數(shù)字校準功能對晶振精度的偏差進行補償。 上
[單片機]
STM32F4學習筆記10——<font color='red'>RTC</font>實時時鐘
單片機模塊化一:按鍵思考
從事單片機工作有幾年了,一直想做一個系列總結(jié),正好趕上今天下雨,俗話說:下雨天,宅家天。吃飽喝足,閑來無事,正好寫篇博客,算是這個系列的開頭第一篇,以后有時間就寫點,這個“系列死了”也不奇怪。有不對的地方或者您有什么好的建議請留言,思想是碰撞的火花,請大家暢所欲言。 按鍵是單片機系統(tǒng)中最常用的一個東東,簡單人機交互界面基本都有按鍵存在。猶記得剛開始接觸單片機時候,讀取一個按鍵IO值,就當做鍵值來處理,發(fā)現(xiàn)一次按鍵經(jīng)常識別為好幾次,查閱資料才發(fā)現(xiàn)要“消抖”,于是加個delay_ms(5),連續(xù)讀取幾次,確定單次有效值。這就是后來不怎么跑多任務(wù),不注重實時性時經(jīng)常‘玩’的方法,如果你還在用,那么下面的文字對你有用,如果你已經(jīng)知
[單片機]
<font color='red'>單片機</font><font color='red'>模塊</font>化一:按鍵思考
HOLTEK推出內(nèi)置Semtech LoRa?技術(shù)的智能火災(zāi)警報MCU SIP模塊
Holtek是總部位于臺灣的微控制器領(lǐng)導(dǎo)廠商,今日宣布與高性能模擬和混合信號半導(dǎo)體產(chǎn)品及先進算法領(lǐng)先供應(yīng)商Semtech Corporation 合作,推出一款新的內(nèi)置Semtech的LoRa?器件和無線射頻技術(shù)(LoRa Technology) 并基于LoRaWAN?開放協(xié)議的智能火災(zāi)警報模塊。 Holtek將在2017年10月12日至11月2日期間的Holtek新產(chǎn)品發(fā)表會中,展示其遠距離煙霧探測報警SIP模塊。此智能防火警報模塊內(nèi)置Semtech的LoRa? 技術(shù)和Holtek新推出的煙霧偵測MCU,包含報警器和主控制器兩部分。主控制器以Holtek M0+ MCU監(jiān)測器進行煙霧偵測并搭配LoRa?技術(shù)實現(xiàn)遠距離通
[網(wǎng)絡(luò)通信]
小廣播
設(shè)計資源 培訓 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 噶尔县| 鄂托克旗| 屯门区| 紫阳县| 东兰县| 石河子市| 盈江县| 体育| 蓬溪县| 古丈县| 揭西县| 同江市| 呼和浩特市| 电白县| 沭阳县| 福贡县| 乡宁县| 新津县| 绥中县| 准格尔旗| 诸城市| 焉耆| 江华| 桂阳县| 平罗县| 太仓市| 阳东县| 固原市| 房产| 根河市| 广丰县| 日照市| 贵阳市| 龙胜| 明星| 顺义区| 图们市| 桃江县| 马尔康县| 托克逊县| 南郑县|