![]() |
發布時間: 2019-6-20 23:52
正文摘要:先簡單說一下實驗目的吧。平時做項目或做一些小作品的時候需要用到時間,時間用的是STM32內部的RTC,在精度要求不是特別高時這樣省去接外設時鐘模塊,省時省力。但我們都知道 ... |
本帖最后由 Linux— 于 2020-2-5 21:41 編輯 各位,我又找到了一種方法,數據手冊上提到的。封裝成函數就是這樣的,親測可用: 函數如下:
只要模塊注冊到了網絡,一下子就同步到網絡了,GSM模塊內部時間也自動對齊網絡時間了。模塊有信號能注冊到網絡的話一秒鐘就搞定了,還是很快的。調用的時候可以讓它循環執行,若是不成功,設置失敗次數達到10次就跳出就好了。若是失敗的話估計就是在關閉網絡場景那一步,其他的沒啥問題。下面是我在串口調試助手顯示的內容:
可以看到模塊剛開機初始化完成時內部時間是2004年01月01日00時00分05秒,同步網絡后時間自動更新到當前時間:2020年02月05日20時33分05秒 了。有興趣的各位不妨試試。 ![]() |
Linux— 發表于 2020-1-3 00:18 現在回頭看了下,其實用服務器那種方式還是很穩的,只需要小小改動一下,在void Get_Sever_Time(void)函數下把所有USART2_RX_BUF改成AT_RecvBuffer就好了,克服了上文說的那些缺點,今晚測試過好多次了,沒有失敗過,每次都成功。而且連接服務器的速度其實是跟信號有關的,之前那個地方信號太弱了,導致連接速度比較慢,在信號好的地方一下子就連上了。還有,AT+CCLK?只是獲取模塊的內部時間,斷電重新上電后還是要從網絡獲取時間同步進去的,不然也是不準的。此外,獲取網絡時間和日期也可以用GPRS基站定位,從返回的字符串中把時間數據解析出來就行了。這個方法我也測過了,是能用的,但對信號強度要求更高,不然網絡沒配置好的話也是定位不到進而獲取不了數據的。 ![]() |
lis。ss 發表于 2019-10-27 17:54 現在回頭看了下,你這個問題是串口2中斷接收沒處理好造成的。如果不想改中斷服務函數的話就在void Get_Sever_Time(void)函數下把所有USART2_RX_BUF改成AT_RecvBuffer可以解決此問題,而且再也不會出現上文提到的那些確定,我今晚用SIM800C測過好幾遍了,沒問題,很好用。你可以試下。 |
qq1182560902 發表于 2019-12-30 13:34 從SIM卡獲取妥妥的,服務器不穩。 AT指令集你去查一下 AT+CCLK? |
獲取時間不穩定嗎??SIM卡或者時間是怎么做的? |
lis。ss 發表于 2019-10-27 17:54 別用服務器的方式獲取了,不穩定不可靠,老是莫名其妙出現奇奇怪怪的問題。用我說的第二種方法直接從SIM卡獲取時間吧 |
"TCP","time.nist.gov","13" 發完后回來數據是 IIII 這樣的,怎么回事?,之前成功過 |