99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

  • 回復
  • 收藏
  • 點贊
  • 分享
  • 發新帖

【每日一坑】萬惡的F1,不帶完整RTC日歷功能的STM32.棄之可惜。。。用之。。。

開個帖子講下基于cube生成的RTC功能,到底有多坑。。。。(僅限F1系列吐槽。。。他弟弟F0都比他強。。。)

其實用CUBE最主要是就是為了省事省心,配置起來,誰知還是有不省心的存在。。。

對于RTC功能或者大部分的其它功能,三步走足以解決,初始化配置,讀寫等一系列操作,就完活了,最初我也是這么想的,配置好RTC點擊生成工程,硬件開啟掉電記憶功能,其實就是加個電池(文明人。。。說得好聽點。。。)

接下來神一般的操作來了,上電,調用寫入時間和寫入日期功能。。。然后關掉電源,上電復位。。。

時間還在。。。日期呢。。。。為毛沒有了。。。。不會這么奇葩吧,是不是我沒配置對,或者調用好呢。。。。思考中。。。算了問度娘。。。

果然不止我獨一份。。。

那么別怪我了。。。開始把hal庫翻了個底朝天,真相也大白了。。。其實hal有很多不可取的做法,不是因為他想脫褲子放屁。。。而是要兼容一整個家族看起來整齊所致。。。有時候看著就是兩頭誤導,還是仔細比照。。。

圖。。。不知道為啥每次我都不能做到文圖并茂,只能留給樓下了,先說結論吧。。。

記住了。。。F1系列只有時間掉電記憶。。。沒有日期掉電記憶。。。(重要的事情不說三遍了,看底下圖就清楚明了了。。。)

想要萬年歷的筒子們,自己轉存一下日期數據吧,或者換個系列,據說F0都OK、、、但沒用過,只能是根據大神說了。。。

全部回復(8)
正序查看
倒序查看
2018-05-22 13:40
準備上圖。。。
0
回復
2018-05-22 13:42
@程序小白
準備上圖。。。

問題的確是存在的,誰用誰知道。。。

0
回復
2018-05-22 13:45
@程序小白
[圖片]問題的確是存在的,誰用誰知道。。。

BKP功能 在線仿真正常。。。但是里面有個日期的掉電復位。。。所以本能的以為這也是非掉電記憶。。。

0
回復
2018-05-22 13:49
@程序小白
[圖片]BKP功能在線仿真正常。。。但是里面有個日期的掉電復位。。。所以本能的以為這也是非掉電記憶。。。

RTC的初始化函數把本質暴露了,沒有任何條件鎖定的情況下,初始化就把日期給初始化了,也就是說他真的不帶記憶功能,一上電就回到兩千年其實在這里。

0
回復
2018-05-22 13:57
@程序小白
[圖片]RTC的初始化函數把本質暴露了,沒有任何條件鎖定的情況下,初始化就把日期給初始化了,也就是說他真的不帶記憶功能,一上電就回到兩千年其實在這里。

真正核心的來自于這里,這個是設置日期函數的內部說明,在設置日期的時候,讀了一下counter,這個才是真正掉電存儲的大BOSS,然后轉化成小時,看看超過沒超過24小時(也就是一天)。如果超過一天了就把超過的天數從counter中減掉,然后把counter寫入到真正要記憶的地方,也就是說實際掉電存儲沒有以天為單位日期的存在。

0
回復
2018-05-23 13:56
果然是有點坑呢!使用F1系列的朋友注意點吧
0
回復
尤小翠
LV.7
8
2018-05-23 18:34

STM32官方HAL這種東西如果使用不當會很麻煩。

窩這邊遇到的問題是HAL太占地方了,而且包裝太好了一眼看不出底層怎么工作的。

1. GPIO的初始化

HAL_GPIO_Init這個一次能初始化多個腳,請看它的實現,內部可是用循環把一組GPIO里所有腳都走了一邊,不管你是不是要初始化這個腳!在單片機啟動的時候初始化引腳設定功能肯定沒問題,但是有些情況下如果需要切換引腳功能,這個就太慢了,這時候就需要手動寄存器操作。另外切換引腳的時候寄存器操作的順序一定要注意,否則可能產生Glitch,也就是短時間的無效狀態或者不期望的輸出。

2. ADC

HAL的ADC部分實在太復雜了,使用它需要使用者自己保存一份ADC的全局結構體,這里面保存了ADC的初始化參數,每個通道的參數,還有一些DMA相關的狀態機什么的。如果我只是用單次采樣,那這個結構體太重量了,而且初始化的參數留著干啥,不都進寄存器里了么。這個是STM32F030上,每一字節ram和rom都很珍貴。所以果斷換LL也就是底層庫,這個跟之前的STD庫很接近,只不過很多函數都變成了宏和static inline,前者都會被編譯器展開,后者在開優化情況下大概率也展開,節省了函數調用時壓棧出棧的時間。 ADC的LL庫比HAL庫少用500字節內存,2k的ROM,這對F7可能不算什么,但是在F030上可就是要命的。

3. STDLIB / NEWLIB

這個不是STM32官方的庫,是GCC那邊的,我想說,最好別用,除非是比較高級的STM32,因為一行printf占地方24k!想想咱們也不需要多華麗的文本格式化所以還是可以舍棄的。單片機和pc編程還是需要有些不同的考慮的

4. Cubemx

CubeMx很好,但是HAL的例子少了點,剛上手的時候很懵逼

0
回復
2018-05-25 12:34
@尤小翠
STM32官方HAL這種東西如果使用不當會很麻煩。窩這邊遇到的問題是HAL太占地方了,而且包裝太好了一眼看不出底層怎么工作的。1.GPIO的初始化HAL_GPIO_Init這個一次能初始化多個腳,請看它的實現,內部可是用循環把一組GPIO里所有腳都走了一邊,不管你是不是要初始化這個腳!在單片機啟動的時候初始化引腳設定功能肯定沒問題,但是有些情況下如果需要切換引腳功能,這個就太慢了,這時候就需要手動寄存器操作。另外切換引腳的時候寄存器操作的順序一定要注意,否則可能產生Glitch,也就是短時間的無效狀態或者不期望的輸出。2.ADCHAL的ADC部分實在太復雜了,使用它需要使用者自己保存一份ADC的全局結構體,這里面保存了ADC的初始化參數,每個通道的參數,還有一些DMA相關的狀態機什么的。如果我只是用單次采樣,那這個結構體太重量了,而且初始化的參數留著干啥,不都進寄存器里了么。這個是STM32F030上,每一字節ram和rom都很珍貴。所以果斷換LL也就是底層庫,這個跟之前的STD庫很接近,只不過很多函數都變成了宏和staticinline,前者都會被編譯器展開,后者在開優化情況下大概率也展開,節省了函數調用時壓棧出棧的時間。ADC的LL庫比HAL庫少用500字節內存,2k的ROM,這對F7可能不算什么,但是在F030上可就是要命的。3.STDLIB/NEWLIB這個不是STM32官方的庫,是GCC那邊的,我想說,最好別用,除非是比較高級的STM32,因為一行printf占地方24k!想想咱們也不需要多華麗的文本格式化所以還是可以舍棄的。單片機和pc編程還是需要有些不同的考慮的4.CubemxCubeMx很好,但是HAL的例子少了點,剛上手的時候很懵逼

首先用時鐘的話就不要用stm32的內部RTC,就用外部時鐘芯片,精度高

HAL庫是把標準庫給封裝了,移植性很高,

0
回復
主站蜘蛛池模板: 国产精妇在线观看第一区 | 精品国产欧美一区二区三区不卡 | 亚洲欧美一区二区三区色吧 | 久久精品一区中文字幕 | 欧美一级淫片免费视频黄 | 亚洲av一级毛片 | 欧美性暴力变态XXXX | 把女的下面扒开添视频 | 国产在线a视频 | japanese国产打屁股网站 | 少妇精品亚洲一区二区成人 | 国产精品无码dvd在线观看 | 爆乳2把你榨干哦 | 沦为公交两奶头春药高潮迭起 | 草久在线观看视频 | 东北农村女人乱淫免费视频 | 久久成人免费精品网站 | 日韩精品久久久久久久软件91 | 999精品网站| 怡红院福利视频 | 成人免费高清在线播放 | 久久久久av综合网成人 | 国产一区二区三区不卡在线看 | 国产学生av娇小av毛片 | 亚洲第一成网 | 麻豆视频在线观看 | www.久久成人 | 亚洲视频免费在线播放 | 狠狠噜天天噜日日噜视频麻豆 | 蜜臀首页 | 亚洲丰满少妇xxxxx高潮对白 | 亚洲综合色丁香婷婷六月图片 | 国语对白乱子 | 中文字幕乱码亚洲无线码 | 久久处女视频 | 久久免费黄色网址 | 黄色片免费观看网站 | 亚洲色精品VR一区二区 | 在线黄色av网站 | 亚洲黄色一级毛片 | 久草在线视频精品 |