stm32f103移植到f0_STM32F042替换STM32F103
因為從事汽車CAN總線及多媒體解碼盒,常常需要解一些簡單的CAN數據,需要的硬件IO不多,僅僅是CAN+UART,所以最近為了節省成本,也是花了不少心思。
直到最近發現了STM32F042,據介紹,這是帶CAN的最小封裝芯片。
STM32F042----Cortex-M0內核 。14年初推出的芯片,號稱帶CAN總線的最便宜的MCU....
仔細查了下手冊,果然很適合我的項目,而且價格也便宜,據說RMB?4-6之間,最小TSSOP20封裝。這對于汽車小產品來說,簡直就是量身定做。
不說了,趕緊動起來,先搭建最小系統,CAN收發器TJA1050+STM32F042+7533就是最簡單的了,暫時不要晶振了,雖然CAN的波特率比較高的時候還是需要晶振的,不過一顆晶振也要好多RMB的 。
接下來最麻煩的事情來了,因為習慣使用IAR來做開發,而且積累下來的程序源碼都是UCOSII的,網絡上的開源代碼居然都是KEIL MDK的,這下囧...
不過也沒辦法,為了節省成本,只好多花點時間了 。
兩根禮拜過去,基本都調通,代碼架構也移植OK,這下終于可以把103的代碼全部移植到F042上了。
有幾個要注意的:
1.庫函數區別:F042對很多庫函數進行了修改,需要注意區別;
2.F042的CAN與103有所不同,需要參考寄存器定義,對于高速波特率,如500K、800K需要外置晶振;
3.無法使用USART1,因為是USART1/CAN/USB復用,這里被CAN占用了;
4.F042的配置文件沒有規范化,很多寄存器定義只能從F072里面找,而又不能完全使用F072的配置文件;
5.F042的*it.c文件不規范,其實STM32F0系列的都一樣,庫函數版本低,沒有把中斷函數文件做好規范化,導致很多函數定義混亂;
6.時鐘安全CSS的內容完全沒有提及,雖然從各種資料能找到介紹,但是基本沒人用,也沒關注到CSS的重要性;
7.F042的功耗要小很多,在同樣的時鐘8MHZ下,F042電流只有4mA, 103達到9mA以上;
8.F042的USART1是增強型的串口,支持LIN 主從模式,UART2是普通串口,不能用于LIN主模式;
9.P042F4標稱FLASH容量是16K,但是實際上容量是32K,F042F6倒是真的只有32K,這搞不懂是為啥;
10.低功耗方面做得很好,比F1系列方便很多。
最后希望F042會和103一樣,價格越來越便宜,質量越來越好。
-------------------------------------------------------------
20180330新增問題:
因為用這顆芯片同時做了CAN接口和LIN接口,發現并不能完整移植F1XX系列的LIN函數庫。因為F0XX系列的函數庫相對F1XX缺失了很多的LIN有關函數,比如有一個函數 Send_Break()是做LIN通信非常必要的卻根本沒有找到函數定義。為此花了很多時間研究如何實現SendBreak功能,一個月多月了也還是不得其所,最后還是花錢在某寶上找到了一個牛人幫忙解決的。
有些問題看起來很簡單,真正做產品的時候還真不是那么回事。
作為誠實勞動成果來說,代碼中的每一行代碼都凝結了不少人的心血甚至是慘痛教訓,還有些祖傳代碼雖然看起來亂七八糟卻是實實在在的鐵飯碗,每個程序猿的個人價值都靠這些代碼來維持。因此,請那些伸手黨請尊重他人的勞動,也珍惜自己的勞動!
總結
以上是生活随笔為你收集整理的stm32f103移植到f0_STM32F042替换STM32F103的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab编程实现二进制树搜索,数据结
- 下一篇: 计算机院校人气排名,2019高校人气排行