如何用電腦做網(wǎng)站服務(wù)器市場(chǎng)seo是什么意思
目錄
- 0.源碼
- 1. RTC
- 2. iTop4412 中的 RTC使用的相關(guān)寄存器
- 3. BCD編碼
- 4. 關(guān)鍵源碼
0.源碼
GitHub:https://github.com/Kilento/4412NoOS
1. RTC
RTC是實(shí)時(shí)時(shí)鐘(Real Time Clock)的縮寫,是一種用于計(jì)算機(jī)系統(tǒng)的硬件設(shè)備,用于記錄和維護(hù)當(dāng)前的日期和時(shí)間。RTC通常包括一個(gè)電池供電的計(jì)時(shí)器和一個(gè)晶體振蕩器,以確保即使在停電情況下也能繼續(xù)運(yùn)行,并且能夠提供準(zhǔn)確的時(shí)間信息。
2. iTop4412 中的 RTC使用的相關(guān)寄存器
我們使用 RTCCON寄存器控制時(shí)鐘的讀寫。BCDSEC、BCDMIN、BCDHOUR、BCDDAYWEEK BCDDAY BCDMON 、BCDYEAR 等寄存器控制年月日時(shí)分秒。
3. BCD編碼
BCD(Binary-Coded Decimal)編碼是一種用二進(jìn)制數(shù)表示十進(jìn)制數(shù)字的編碼方式。在BCD編碼中,每個(gè)十進(jìn)制數(shù)字用4位二進(jìn)制數(shù)表示,即一個(gè)十進(jìn)制數(shù)的每個(gè)數(shù)字都被編碼為4位的二進(jìn)制數(shù)。例如,十進(jìn)制數(shù)57用BCD編碼表示為 0b01010111,對(duì)應(yīng)十六進(jìn)制為0x57。
4. 關(guān)鍵源碼
static unsigned int dec_2_bcd(unsigned int dec)
{return ((dec / 10) << 4 | (dec % 10));
}static unsigned int bcd_2_dec(unsigned int bcd)
{return (((bcd & 0xf0) >> 4) * 10 + (bcd & 0x0f));
}
void rtc_set_time(const struct rtc_time* time)
{// 打開RTC讀寫開關(guān)RTCCON |= (1 << 0);/// 寫 RTC時(shí)間寄存器BCDYEAR = dec_2_bcd(time->year) - 2000;BCDMON = dec_2_bcd(time->month);BCDDAY = dec_2_bcd(time->day);BCDDAYWEEK = dec_2_bcd(time->dayweek);BCDHOUR = dec_2_bcd(time->hour);BCDMIN = dec_2_bcd(time->minute);BCDSEC = dec_2_bcd(time->second);RTCCON &= ~(1 << 0);return;
}void rtc_get_time(struct rtc_time* time)
{// 打開RTC讀寫開關(guān)RTCCON |= (1 << 0);/// 寫 RTC時(shí)間寄存器time->year = bcd_2_dec(BCDYEAR) + 2000;time->month = bcd_2_dec(BCDMON);time->day = bcd_2_dec(BCDDAY);time->dayweek = bcd_2_dec(BCDDAYWEEK);time->hour = bcd_2_dec(BCDHOUR);time->minute = bcd_2_dec(BCDMIN);time->second = bcd_2_dec(BCDSEC);RTCCON &= ~(1 << 0);
}
2024年02月14日
Kilento