本帖最后由 jinglixixi 于 2020-9-29 20:16 編輯
原打算先為開(kāi)發(fā)板配置一個(gè)顯示屏,有了顯示窗口就便于信息輸出了,無(wú)奈耗了幾天的時(shí)間也沒(méi)使OLED屏顯示半點(diǎn)痕跡,先在例程的功能模塊上練練手了。 RTC是大多數(shù)ARM產(chǎn)品都配置的功能,自然AT32F403AF也不例外,沒(méi)有OLED屏做支撐,也就只能依賴串口通信了,無(wú)奈呀,無(wú)奈! 由于開(kāi)發(fā)板自身就可以虛擬出串口,也就省去了外掛USB轉(zhuǎn)TTL串口模塊的麻煩,當(dāng)然這個(gè)虛擬出的串口占用的編號(hào)比較大,只能將其強(qiáng)行改的小一些,否則串口調(diào)試工具可不答應(yīng)。 將程序編譯下載后,其運(yùn)行效果如圖1所示。
1.jpg (49.36 KB, 下載次數(shù): 73)
下載附件
2020-9-28 22:44 上傳
圖1 運(yùn)行效果 天啊,這哥們兒還停留在2018年吶! 老哥醒醒吧,光陰荏苒,現(xiàn)在已經(jīng)是2020年了。 喚醒老哥的辦法只有一個(gè),那就是修改初始時(shí)間設(shè)置。 打開(kāi)時(shí)間設(shè)置函數(shù)才發(fā)現(xiàn)事情有點(diǎn)怪,什么情況? 你親自看下面這個(gè)函數(shù)吧! - uint8_t RTC_Set(uint16_t syear, uint8_t smon, uint8_t sday, uint8_t hour, uint8_t min, uint8_t sec)
- {
- uint32_t t;
- uint32_t seccount=0;
- if(syear<1970||syear>2099)
- return 1;
- for(t=1970;t<syear;t++)
- {
- if(Is_Leap_Year(t))seccount+=31622400;
- else seccount+=31536000;
- }
- smon-=1;
- for(t=0;t<smon;t++)
- {
- seccount+=(uint8_t)mon_table[t]*86400;
- if(Is_Leap_Year(syear)&&t==1)seccount+=86400;
- }
- seccount+=(uint8_t)(sday-1)*86400;
- seccount+=(uint8_t)hour*3600;
- seccount+=(uint8_t)min*60;
- seccount+=sec;
- /* Enable PWR and BKP clock */
- RCC_APB1PeriphClockCmd(RCC_APB1PERIPH_PWR | RCC_APB1PERIPH_BKP, ENABLE);
- /* Enable write access to Backup domain */
- PWR_BackupAccessCtrl(ENABLE);
- /* Set the RTC counter value */
- RTC_SetCounter(seccount);
- /* Wait until last write operation on RTC registers has finished */
- RTC_WaitForLastTask();
- return 0;
- }
復(fù)制代碼
看出來(lái)沒(méi)有,我們通常使用的RTC函數(shù)是從相應(yīng)的寄存器中讀取時(shí)間值和日期值。這哥們兒竟然需要統(tǒng)一折算到秒,莫非它就是一個(gè)大號(hào)的秒信號(hào)計(jì)數(shù)器呀! 設(shè)置時(shí)間時(shí)折算到秒來(lái)更新計(jì)時(shí)值,讀取時(shí)再按進(jìn)制變換成年月日、分時(shí)秒。 難怪在程序的數(shù)組中存放了這些清規(guī)戒律吶! const uint8_t table_week[12]={0,3,3,6,1,4,6,2,5,0,3,5}; const uint8_tmon_table[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 原來(lái)是怕老哥出軌呀! 通過(guò)分析RTC初始化函數(shù)RTC_Init(),才發(fā)現(xiàn)初始時(shí)間的設(shè)置函數(shù)被藏在這里,其內(nèi)容是RTC_Set(2018,8, 8, 8, 8, 0);。 別客氣,按電腦的系統(tǒng)時(shí)間將它擺平了! 修改后經(jīng)程序的程序編譯下載,其步調(diào)終于跟上隊(duì)了,其時(shí)間效果如圖2所示。 嗯,表現(xiàn)還不賴! 哎,就怪我的表現(xiàn)不好,沒(méi)有及時(shí)為你配上一個(gè)顏值高的小臉蛋!算哥欠你的。
2.jpg (48.48 KB, 下載次數(shù): 73)
下載附件
2020-9-28 22:44 上傳
圖2 更新RTC計(jì)時(shí)
|