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

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

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

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

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

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

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

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

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

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

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

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

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

面对一个新的MCU,我再也不敢说第一步是点灯了的更多相关文章

  1. 如何快速掌握一款新的MCU? (转)

      发布时间:2013-12-15 10:27:51 技术类别:单片机     个人分类:话题思考       任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量.指 ...

  2. 转:面对一个全新的环境,作为一个Oracle DBA,首先应该了解什么

    转载:面对一个全新的环境,作为一个Oracle DBA,首先应该了解什么 由于时间比较久了,找不到原文章的链接,先贴上内容供大家参考 在这里,不谈那些大的方面,比如了解整个IT环境整体情况,假设你已经 ...

  3. linux内核分析作业6:分析Linux内核创建一个新进程的过程

    task_struct结构: struct task_struct {   volatile long state;进程状态  void *stack; 堆栈  pid_t pid; 进程标识符  u ...

  4. Step by Step 创建一个新的Dynamics CRM Organization

    原创地址:http://www.cnblogs.com/jfzhu/p/4012833.html 转载请注明出处 前面演示过如何安装Dynamics CRM 2013,参见<Step by st ...

  5. Step by step 如何创建一个新森林

    原创地址:http://www.cnblogs.com/jfzhu/p/4006118.html 转载请注明出处 创建一个新森林就是在一台计算机上安装AD DS,并将这台计算机提升为域控制器. 演示环 ...

  6. 【Cocos2d-x for WP8 学习整理】(1)创建一个新项目

    喜大普奔                         10.1假期之前看到了一个很振奋的消息,就是随着Cocos2d-x 2.2的发布,WP8/WIN8有史以来第一次的合并到主版本了. 之前 V2 ...

  7. ZeroMQ接口函数之 :zmq_ctx_new – 创建一个新的ZMQ 环境上下文

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_ctx_new zmq_ctx_new(3)               ØMQ Manual - ØMQ/3.2 ...

  8. ZeroMQ接口函数之 :zmq_curve_keypair - 生成一个新的CURVE 密钥对

    ZeroMQ 官方地址 :http://api.zeromq.org/4-0:zmq_curve_keypair zmq_curve_keypair(3) ØMQ Manual - ØMQ/4.1.0 ...

  9. 【转】一个新的UIButtonMessage 给NGUI,使用委托,自动选择Receiver提供的方法

    http://blog.csdn.net/chiuan/article/details/9290651?utm_source=tuicool&utm_medium=referral 来分享一个 ...

随机推荐

  1. Sprint.Net 笔记

    有生以来写的第一份博客, 还真不会写, 请高手们指导指导. 1.引入 Spring.Core.dll 和 Common.Logging.dll 两个文 2. 在UI层的Web.conf 的 <C ...

  2. 交换机的端口状态是UP,但是查询该端口下的MAC地址为空

    (电脑已关机)电脑与交换机直连的端口状态 还是 UP ,但是 查询该端口下的 MAC地址为空. 初步怀疑原因: Wake-on-LAN(电脑关机,网卡还在工作) Wake-On-LAN简称WOL,是一 ...

  3. 转: 我们为什么使用ORM?

    博客园在推广ORM方面的确做了很大的贡献,很多的程序员开始使用ORM,不用写SQL的喜悦让他们激动不已,可是好景不长,他们很快发现众多的烦恼一个接一个的出现了. 很遗憾,我并不打算在这篇文章中解决这些 ...

  4. CSS样式选择器优先级

    CSS样式选择器分为4个等级,a.b.c.d,可以以这四种等级为依据确定CSS选择器的优先级. 1.如果样式是行内样式(通过Style=””定义),那么a=12.b为ID选择器的总数3.c为Class ...

  5. Setup Spark source code environment

    1. Install Java and set JAVA_HOME 2. Install Eclipse Juno Java IDE, Scala plugin and Scala Test 3. D ...

  6. powershell中的两只爬虫

    --------------------序-------------------- (PowerShell中的)两只爬虫,两只爬虫,跑地快,爬网页不赖~~~ 一只基于com版的ie,一只基于.net中 ...

  7. jvm1

    字节码常量池: 01开头的说明是一个utf-8编码的常量,那么后面就一定要跟两个字节也就是四位16进制的数,来表示这个常量占几个字节,然后后面再跟与这个字节数对应长度的utf-8编码的字符串.之所以一 ...

  8. JavaScript基础--小案例:在网页指定位置弹出错误信息(十二)

    案例分析:点击按钮后,在网页上指定区域,提示错误信息!5秒后,错误信息提示自动消失! <script languag="javascript" type="text ...

  9. Unity3D 调用模态对话框/Unity3D MessageBox

    Unity模态对话框/Unity MessageBox 很多时候,我们需要将Unity的exe产品发布到某一个平台.比如某某斗地主发布到某Q游戏.这时候如果需要调试肿么办.办法无外乎那几个.1:源码调 ...

  10. oracle之sqlplus讲解

    这里要解释的sqlplus有2方面内容:sqlplus登陆命令和sql*plus工具命令. [sqlplus登陆命令] 常用的登陆命令有: sqlplus /nolog 登陆到sqlplus,还未登录 ...