博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面对一个新的MCU,我再也不敢说第一步是点灯了
阅读量:6224 次
发布时间:2019-06-21

本文共 959 字,大约阅读时间需要 3 分钟。

折腾了几天AT91SAM3S,今天才算是把开发板上的3个LED点亮。 在点亮之前,起码看了百八十页的Datasheet,动用了N次百度。

各种时钟,看门狗,分散加载,中断向量,都得去整。这些都远远超过了一只LED。

以前使用别人的工程模板,倒是没觉得。最近这么一折腾,学问还真大! 折腾到最后,时钟的初始化还是用的例子里边的。

于是,面对一个新的MCU,我再也不敢说第一步是点灯了

MCU技术中,时钟是一个很关键的东西。外部输入有快慢时钟,时钟在芯片中会经过PLL倍频,倍频后的时钟还要警告各种分频送给外设使用。外设会继续对这些时钟分频,以达到外设需要的工作频率。计算各种时钟频率,是一个相当麻烦的工作。此外还要记住哪个外设使用的是什么时钟,要使外设工作必须打开外设时钟。

还有外部时钟失效时候的检测,时钟的切换处理。至于定时器,那就是更高层次上的麻烦了。

现在,我只能说,开始写应用代码之前,搞明白时钟再说吧。

还有就是启动过程分析。一直使用MDK的默认工程配置,启动文件MDK都帮你定义好了。程序加载到什么地方,MCU从什么地方启动。这个一直都没考虑过,反正都是默认的。直接用就可以了。可是很多时候,这些启动文件是不满足要求的。我得自己写这些东西,再来写这个还得重新学。查资料,写代码,验证,也是个相当大的工作量。

知道了MCU的启动过程,在启动时候MCU背地里都干了啥,就算是彻底地掌握了这个程序的所有代码了。进入main之后就不用闷头苍蝇般到处找问题原因了。

当然,分散加载也是需要了解一点的。默认情况的分散加载适合很多情况。但是,需要自己手写的分散加载也不少。分散加载确定了将你写的程序加载到MCU的 什么地方。这个就要求熟悉内存空间的划分,熟悉MCU分散加载文件的写法。这又是一种语法了。。。

 

技术、习惯总是在不断地改变着。也许有一天,上边我说的那些东西也不再是MCU的基础性东西。会有更底层的东西需要去动手去折腾,需要我参照着DataSheet去写。

但是对于底层部分的探索,了解他们从始至终的工作过程的努力将不会终止。即使在最新的上了WinCE、安卓操作系统的MCU里边,也必须了解他们底层的工作环境。从启动到应用,从底层到UI。

作为一个追求技术的人,停留在原地拷贝几行代码,这样的事情我不愿意去做。

转载地址:http://iauna.baihongyu.com/

你可能感兴趣的文章
权限设计之一
查看>>
如何使用网络库实现应用级消息收发
查看>>
Linux中断(interrupt)子系统之二:arch相关的硬件封装层【转】
查看>>
Django - 模板
查看>>
Java刷题知识点之什么是死锁、死锁产生的4个必要条件、死锁的解除与预防
查看>>
ArcGIS Engine对象库
查看>>
图片在保存的时候===》出现这个异常:GDI+ 中发生一般性错误
查看>>
Hadoop MapReduce编程 API入门系列之wordcount版本2(六)
查看>>
分布式监控系统Zabbix-3.0.3-完整安装记录(2)-添加mysql监控
查看>>
运行灵活网页布局的示例程序
查看>>
Android -- Service绑定解绑和aidl
查看>>
它们的定义AlertDialog(二)
查看>>
SQL Server-聚焦计算列或计算列持久化查询性能(二十二)
查看>>
ten sentences(31-40)
查看>>
设计模式(二)工厂方法(创建型)
查看>>
文本比较算法Ⅵ——用线性空间计算最大公共子序列(翻译贴)
查看>>
Winform系列——好用的DataGridview过滤控件(表格的高级搜索功能)
查看>>
KVM 介绍(1):简介及安装
查看>>
Java没有源代码的同步集合~
查看>>
各类总线传输速率【转】
查看>>