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

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

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

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

(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 外設簡介

0x 系列 RTC

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

0x系列RTC主要特點:

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

– 可編程的預分頻器: 分頻系數最高可達220

? 獨立時鐘域:

– PCLK1時鐘域

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

? RTC時鐘源:

– HXTAL時鐘分頻

– LXTAL振蕩電路時鐘

– IRC40K振蕩電路時鐘

? 可屏蔽的中斷源:

– 鬧鐘中斷

– 秒中斷

– 溢出中斷

0x系列RTC框圖介紹:

RTC由兩個主要部分組成,如下圖0x系列RTC結構框圖所示,位于PCLK1時鐘域的APB接口和位于RTC時鐘域的RTC內核。

輸入圖片說明

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

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

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

x0 系列 RTC

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

x0系列RTC主要特點:

? 通過軟件設置來實現夏令時補償。

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

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

? 通過移位功能進行亞秒級調整。

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

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

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

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

? 可屏蔽的中斷源:

– 鬧鐘0;

– 時間戳檢測;

– 侵入檢測;

x0系列RTC框圖介紹:

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

輸入圖片說明

? 鬧鐘

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

? 侵入事件

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

? 可選的RTC輸出功能:

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

1Hz( 默認預分頻值): 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的基礎上做了部分功能的升級。提供了一個包含日期(年/月/日)和時間(時/分/秒/亞秒)的日歷功能。除亞秒用二進制碼顯示外,時間和日期都以BCD碼的形式顯示。

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

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

? 通過軟件設置來實現夏令時補償。

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

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

? 通過移位功能進行亞秒級調整。

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

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

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

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

? 可屏蔽的中斷源:

– 鬧鐘0和鬧鐘1;

– 時間戳檢測;

– 自動喚醒事件;

– 侵入檢測;

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

4xx系列RTC框圖介紹:

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

輸入圖片說明

? 鬧鐘

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

? 侵入事件

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

? 可選的RTC輸出功能:

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

1Hz(默認預分頻值):(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系列,為單獨的一個外設模塊,所以使用RTC時,0x系列相比x0系列和4xx系列還需使能BKP的時鐘。

各系列 RTC 模塊功能對比

輸入圖片說明

14.2.GD32 RTC 硬件設計

? Vbat電源設計

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

輸入圖片說明

? RTC_TAMPx引腳

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

14.3.GD32 RTC 軟件配置

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

時鐘及分頻配置

? 由于RTC工作在備份域,所以使用RTC時需要使能備份域寫功能,而控制備份域寫功能的寄存器位于PMU中,所以操作RTC還需要將PMU_CTL寄存中的BKPWEN置位,從而還需使能PMU的時鐘。而對于0x系列備份域為單獨的外設,還需額外使能BKP備份域時鐘。

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

0x系列時鐘及分頻配置如代碼清單 RTC 0x系列時鐘及分頻配置所示,RTC使能后需要等待RTC寄存器和APB1時鐘同步,執行rtc_register_sync_wait()函數;此外0x系列RTC在RTC寄存器配 置時需要等待上一次配置結束才能繼續新的配置,所以在每個寄存器配置前需要執行rtc_lwoff_wait()函數,等待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時鐘同步,執行rtc_register_sync_wait()函數;和0x系列不同,后續配置過程x0和4xx系列均不需要執行rtc_lwoff_wait()函數。

代碼清單 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系列內部低速時鐘為32K,所以分頻系數和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系列由于沒有硬件日歷功能,所以需要讀取計數器通過軟件計算出日歷;而x0系列和4xx系列具有硬件日歷功能,日期信息均是BCD碼,所以在日歷配置的格式和方式均有差別。

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

代碼清單 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系列日歷配置所示,該函數提供了日歷配置的入口參數,參數為BCD碼格式,寫入后對RTC日歷結構體賦初值,日歷結構體還可以配置星期、時間格式等,這里默認配置了24小時制。函數入口參數使用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系列基本相同, 唯一區別只是日歷結構體成員名字少了“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位計數器運行時間,所以其鬧鐘也是32位數據,當計數器和鬧鐘值匹配時會產生鬧鐘事件或中斷,所需配置的鬧鐘值為鬧鐘剩余倒計時加上當前計數器值;而x0系列和4xx系列是硬件BCD日歷功能,所以其鬧鐘也是BDC格式,且具有位域屏蔽功能,根據需要直接配置具體的時間即可。

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

0x系列配置的鬧鐘參數為鬧鐘中斷的倒計時時間,寫入參數為十進制。

代碼清單 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系列鬧鐘配置所示,該函數提供了鬧鐘配置的入口參數,參數為BCD碼格式,寫入后對RTC鬧鐘結構體賦初值,鬧鐘結構體可以配置位域屏蔽、選擇配置日期或星期、時間格式等,這里默認配置了屏蔽天、小時、分鐘,所以配置最后實際生效的只有秒,所以配置后鬧鐘均是1分鐘產生一次。鬧鐘配置前需失能鬧鐘,配置后再使能,4xx系列配置的鬧鐘參數為鬧鐘產生的日期時間,因BCD格式寫入參數參數使用16進制。

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

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

推薦閱讀最新更新時間:2025-06-04 06:16

GD32 MCU 入門教程】GD32 MCU 常見外設介紹(13)DAC 模塊介紹
DAC是一種把二進制數字量形式的離散信號轉換成以標準量(或參考量)為基準的模擬量的轉換器,它常用于過程控制計算機系統的輸出通道,與執行器相連,實現對生產過程的自動控制。 13.1.GD32 DAC 外設原理簡介 因篇幅有限,本文無法詳細介紹GD32所有系列的DAC,下面以GD32F30x為例,先著重介紹下GD32F30x的DAC及其結構框圖,然后介紹下各個系列DAC的差異。 GD32F30x DAC 主要特性 ? 8位或12位分辨率,數據左對齊或右對齊; ? 每個通道帶有DMA功能; ? 同步更新轉換; ? 外部事件觸發轉換; ? 可配置的內部緩沖區; ? 輸入參考電壓VREF+; ? 噪聲波生成(LSFR噪聲模式和三角噪
[單片機]
【<font color='red'>GD32</font> <font color='red'>MCU</font> 入門教程】<font color='red'>GD32</font> <font color='red'>MCU</font> 常見<font color='red'>外設</font>介紹(13)DAC <font color='red'>模塊</font>介紹
GD32 MCU 入門教程】七、分散加載說明
分散加載說明以GD32F103ZE為例,分別用Keil、IAR和Embedded Builder工具實現:將函數放置某個地址、將常量放置某個地址、將函數放在RAM中運行的三種效果。 1、將led_toggle()函數放在0x08040000地址后。 2、將tempbuf 常量放在0x08020000地址后。 3、將void led_flow(void) 函數在RAM中運行,放在0x20008000地址后面。 1.Keil IDE example 1.1.將函數放置某個地址 生成.sct 文件 單擊 MDK 的 Option - linker 取消勾選“Use memory layout from target Dialog”。 單
[單片機]
【<font color='red'>GD32</font> <font color='red'>MCU</font> 入門教程】七、分散加載說明
avr單片機SPI串行外設接口初始化配置及說明
串行外設接口 SPI允許 ATmega16 和外設或其他 AVR 器件進行高速的同步數據傳輸。7 種可編程的比特率,主機或從機操作,全雙工, 3 線同步數據傳輸,可以從閑置模式喚醒 ,作為主機時具有倍速模式 (CK/2) /* PB7 SCK (SPI 總線的串行時鐘 ) PB6 MISO (SPI 總線的主機輸入 / 從機輸出信號 ) PB5 MOSI (SPI 總線的主機輸出 / 從機輸入信號 ) PB4 SS (SPI 從機選擇引腳 ) SCK 端口 B, Bit 7 SCK :SPI 通道的主機時鐘輸出,從機時鐘輸入端口。工作于從機模式時,不論 DDB7 設
[單片機]
51單片機初學實踐:用DS1302模塊和1.44寸TFT顯示屏實現電子鐘
這周在上次實現的電子鐘(51單片機初學實踐:用DS1302模塊和LCD1602顯示屏實現電子鐘)的基礎上作了以下2點改進:1、將LCD1602屏幕更換為1.44寸 TFT顯示屏 主要考慮是TFT顯示屏可以使用不同字體和顏色,更方便定制顯示界面 2、將STC89C52RC單片機更換為STC12C5A60S2單片機 首先是空間更大,STC12C5A60S2單片機(60K bytes flash ROM, 1280 bytes data RAM),STC89C52RC單片機(8K bytes flash ROM, 512 bytes data RAM) 其次STC12C5A60S2單片機有單獨的SPI接口(P1.5 MOSI 和
[單片機]
51<font color='red'>單片機</font>初學實踐:用DS1302<font color='red'>模塊</font>和1.44寸TFT顯示屏實現電子鐘
單片機如何通過GPRS模塊獲取位置信息詳細方法說明
GPRS是如何獲取位置的呢?GPRS不同于GPS,我們都知道GPS是通過衛星來定位,而GPRS是通過基站來定位,其定位精度收到通信基站的位置和密度的影響在沒有基站的位置上,誤差范圍會比較大,也許系有人會問既然GPS定位更精準,拿為什么還需要基站定位呢?這是因為GPS定位只能在空曠的地方接收到信號,比如在高樓密集的城市,高架橋下,室內等GPS信號會很差或接收不到信號,同時也會受天氣的影響如果天氣差GPS信號強度會低很多。但基站定位雖精度雖不及GPS,但只要有基站至室內也可定位,且不會收天氣的影響。隨著基站的數量越來越多,GPRS的定位也會越來越準確。 基站定位示意圖 獲取位置流程 流程圖 獲取到基站的位置信息后我們可以調
[單片機]
<font color='red'>單片機</font>如何通過GPRS<font color='red'>模塊</font>獲取位置信息詳細方法說明
關于PIC單片機模塊和功能總結
PIC 單片機的概述 PIC16F616 是一款 14 引腳、8 位的 CMOS 單片機。采用精簡指令集,僅有 35 條指令,由于采用了數據總線和指令總線分離的哈佛總線結構,使得除少量指令不是單周期之外,大部分的指令都是單周期指令。這樣有利于提高單片機的運行速度和執行效率。 PIC16F616 這款單片機供電電壓可以在 2V 到 5。5V 之間,內部集成了一個 RC 振蕩器,頻率可以配置成 8MHZ 或者 4MHZ,也可以用外部晶振提供時鐘。內部集成有 AD 轉換、比較器等硬件模塊,還具有上電復位、欠壓復位、看門狗、代碼保護等功能。三個定時器、PWM 發生器等可以由用戶編程。下面我來一一介紹關于 PIC 單片機的這些模塊和功能
[單片機]
STC89C51單片機和ADXL345三軸加速度模塊實現簡易計步器程序
單片機源程序如下: #include STC51PRJ.h extern BYTE BUF ;//接收數據緩存區 /*****************起始信號***************/ void ADXL345_Start() { SDA = 1; //拉高數據線 SCL = 1; //拉高時鐘線 Delay5us(); //延時 SDA = 0; //產生下降沿 Delay5us(); //延時 SCL = 0; //拉低時鐘線 } /************
[單片機]
不建議用STM32F1的RTC實現日歷功能
有讀者問:如何在STM32F1上實現日歷功能? 一、關于RTC RTC:Real TimeClock,實時時鐘,記錄當前時間的計算機時鐘。 RTC 不僅應用于個人計算機、服務器和嵌入式系統,幾乎所有需要準確計時的電子設備也都會使用。 支持 RTC 的微控制器可用于精密計時器、鬧鐘、手表、小型電子記事薄以及其它多種設備。 在實際項目中,運用時間戳的地方很多,比如:存儲數據、日志消息、系統故障等。 二、STM32的RTC 在所有STM32處理器中,都集成了一個RTC模塊, 是一個獨立的 BCD 定時器 / 計數器。 但是,在STM32F1系列中,RTC模塊的功能相對比較簡單(也許是最前推出的原因)。其中,一個重
[單片機]
不建議用STM32F1的<font color='red'>RTC</font>實現日歷功能
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 镇雄县| 金乡县| 兴城市| 东阿县| 岳西县| 兴安盟| 中宁县| 泸西县| 龙泉市| 鄄城县| 平武县| 台州市| 富蕴县| 新泰市| 哈巴河县| 西贡区| 乐陵市| 静宁县| 赤峰市| 宜城市| 同仁县| 宿迁市| 民权县| 元阳县| 屏山县| 奇台县| 广宗县| 茌平县| 晋江市| 邵东县| 札达县| 九龙城区| 威宁| 望江县| 克什克腾旗| 南涧| 中超| 娱乐| 元谋县| 荔浦县| 巴塘县|