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功能,一个月多月了也还是不得其所,最后还是花钱在某宝上找到了一个牛人帮忙解决的。

有些问题看起来很简单,真正做产品的时候还真不是那么回事。

作为诚实劳动成果来说,代码中的每一行代码都凝结了不少人的心血甚至是惨痛教训,还有些祖传代码虽然看起来乱七八糟却是实实在在的铁饭碗,每个程序猿的个人价值都靠这些代码来维持。因此,请那些伸手党请尊重他人的劳动,也珍惜自己的劳动!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488063.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

为什么很难创造出新的处理器?

出品 | CSDN(ID:CSDNnews)译者 | Arvin,责编 | 郭芮以下为译文:RISC-V处理器指令集体系结构(ISA)的问世和最初的成功重新激发了人们对定制处理器设计的兴趣,但是业界现在正在努力解决…

windows 安装 python3

安装python------------------------------------------------------------ 1,打开连接https://www.python.org/downloads/release/python-361/2,下载安装3,安装之后, (安装目录)4, 把python的安装目录,加入到系统环境变量里面去, 右键我的电…

用Matlab来备份文件夹

用Matlab来备份文件夹 由于各种各的原因,我们需要备份一些文件夹,例如过几天OneDrive的容量将减少,不想升级的用户必须删减内容或者备份内容。但是简单的复制文件夹会造成一些问题,例如导致历史数据丢失、少量的变动也需要复制所有数据。 为了克服这个问题,我用Matlab写…

情绪调节的自适应_如何做好情绪的管理者

积极有效的情绪管理一个人如果能够控制自己的情绪、欲望和恐惧,那他就胜过国王。----约翰米尔顿01情绪概述情绪和情感,人对客观外界事物的态度的主观体验和相应的行为反应,它反映的是主体需要和客观外界事物间的关系。情绪和情感两个词常可通…

科普 | 同一个世界,地图有这么多不同的表达!

来源:测绘学报一、地图投影的概念地球到底是什么样的?公元前6世纪,古希腊数学家毕达哥拉斯率先提出了“地圆说”。他在观察月食时,发现大地在月球上的投影是圆的,所以认为大地是完整的圆球体。他首次提出了“地球”这一…

pythonllk

字符编码数据类型函数 装饰器 内置函数迭代器 生成器异常 反射模块类 对象类的进阶socket进程线程httphtmlcssJavaScriptjqueryMysqlMysql(二)  库表Django (一)Django (二)转载于:https://www.cnblogs.com/guobaoyuan/p/7086271.html

Matlab画图技巧之保存超大体积图

在Matlab中进行科学计算时,可能会遇到庞大数据,例如长年累月的实验数据,或者现在流行的深度学习训练样本等等。在对它们进行画图时,如果保存为矢量图格式eps,随便一个图体积可能就大于1G,这对于论文写作来说…

shell 进入hadoop_php通过shell调用Hadoop的方法

2.shell代码(hadoop.sh)#!/bin/bashecho "wordCount test start"rm -rf ~/file_20141024mkdir ~/file_20141024cd ~/file_20141024echo "Hello World" > file1.txtecho "Hello China Beijing" > file2.txtcd /home/work/hadoop/bin ./hado…

解密脑机接口:专访CMU生物医学工程系主任贺斌

卡耐基梅隆大学生物医学工程系主任贺斌教授(照片由本人提供)来源: 知识分子撰文 | 李澄宇(中科院神经所PI)赵维杰(NSR新闻编辑)脑机接口能做什么?带上电极帽,你可以在实验…

accp8.0转换教材第1章多线程理解与练习

一.单词部分: ①process进程 ②current当前的③thread线程④runnable可获取的 ⑤interrupt中断⑥join加入⑦yield产生⑧synchronize同时发生 二.预习部分 1.线程与进程的区别: 进程是系统运行程序的基本单位 线程是进程中执行运算的最小单位 2.说明创建线…

Matlab画图技巧之消除空白

</pre>写报告或论文时,为了充分利用篇幅和实现紧凑美观,我们常常想要得到空白冗余较小的图,这在Tikz里面十分容易实现。但是在Matlab里需要做很多的工作才能达到目的。</p><p></p><p>Matlab默认的图空白十分大,看起来很别扭:</p><…

产品运营 跨境支付_餐饮网店的运营 跨境支付哪个平台最好

看你的业务和主营区域&#xff0c;目前信用卡和借记卡都是在线交易中占主流的支付方式。然而内在许多国家&#xff0c;并不是所容有人都喜欢使用信用卡或借记卡在线上消费&#xff0c;原因有很多&#xff0c;也许是因为本身没有信用卡&#xff0c;也许是担忧信息泄露&#xff0…

5G和北斗,交通行业新基建的正确打开方式

作者&#xff1a;湖南省交通运输厅科技信息中心 乔川龙物联网智库 整理发布转载请注明来源和出处导 读交通运输行业应该是5G先行区&#xff0c;一是符合5G的机会在于与2B垂直行业的深度融合、赋能行业转型升级和高质量发展的判断&#xff1b;二是根据交通运输行业的特点&#…

for循环与闭包

for循环和闭包 今天记录for循环和闭包的使用&#xff1a;for(var i 0 ; i < lis.length ; i) {lis[i].onclickfunction(i){return function(){console.log(i)}}(i); } 在for循环里面执行闭包的时候&#xff0c;将循环体的代码储存在一个内存中&#xff0c;对应的i值也储存在…

Matlab画图技巧之消除空白(二)

在上一篇博客中,我们介绍了最基本的消除空白的情况,但是实际的应用往往比较复杂。为了让读者更清楚的了解消除空白的技巧,本文再提供两个稍微 复杂一点的例子。

人工智能与人类智能的竞赛:人机对抗智能技术全梳理

作者: 黄凯奇*, 兴军亮, 张俊格, 倪晚成, 徐博来源&#xff1a;中国科学院自动化研究所智能系统与工程研究中心1引言人工智能从诞生之始就以对抗人类智能为衡量准则(著名的图灵测试) 。作为人工智能研究的前沿方向&#xff0c;人机对抗技术一直是国内外人工智能研究的热点,以人…

Vue computed参数与各生命周期关系(主要是异步的时候)

前面聊了vue生命周期与路由的先后顺序&#xff0c;现在聊聊computed与各生命周期。先聊一下需求背景&#xff0c;我在做一个图表的时候遇到了&#xff0c;我将图表样式封装为一个组件&#xff0c;然后各个地方需要的时候将数据通过props传入到组件自动画图。因为我这个数据会变…

场景切割CVPr2022 SceneSegmentation

目录 算法介绍 无监督训练原理 源码地址: lstm模块 bilstm opencv场景分割 加阈值:

工业机器人 答案 韩建海_不可或缺:协作机器人对于制造业转型升级的意义

只要谈到自动化&#xff0c;就很难不提到协作机器人。自从十几年前协作机器人问世以来&#xff0c;它们便承担起了众多企业的自动化任务。新冠之前&#xff0c;英国制造业正在应对英国退欧和劳工短缺的不确定性。但是&#xff0c;他们无法预见新冠对行业的影响。任何行业都无法…

Python爬虫用Selenium抓取js生成的文件(一)

简介任务简述实现过程 简介 我最近在看关于计算机的一些书籍,发现了这个电子书清单:计算机开放电子书汇总, 和大家分享一下. 我在下载其中的书籍时被导向了这个很好的计算机电子书网站KanCloud看云,里面有非常多的实用的编程方面的电子书,很多是该网站自己用html生成的,格式多…