折腾了几天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. 编程之美----NIM游戏

    : 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...

  2. postgres 查询数据库所有表名

    select relname as TABLE_NAME ,col_description(c.oid, 0) as COMMENTS from pg_class cwhere relkind = ' ...

  3. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文 ...

  4. LG1268树的重量

    #include<bits/stdc++.h> using namespace std; #define N 35 #define INF 1e9 int dis[N][N],n,len, ...

  5. goldengate 12.2中通过restful查看OGG状态

    安装ogg 12.2之后 GGSCI>create datestore 然后重启mgr 和其它进程, 通过浏览器http://ogg-server-ip:mgr-port/groups 可以看到 ...

  6. Bootstrap框架基础

    特点:写非常少的代码 即可实现多终端的页面适配 ☑  简单灵活可用于架构流行的用户界面和交互接口的html.css.javascript工具集. ☑  基于html5.css3的bootstrap,具 ...

  7. UE4 Tutorial - Custom Mesh Component 用于绘制自定义网格的插件CustomMeshComponent

    UE4 中用于绘制自定义网格的插件CustomMeshComponent. 转载: UE4 Tutorial - Custom Mesh Component   Over the last few w ...

  8. 修改FastColoredTextBox控件完成选择

    //判断是否是中文        public bool IsChina(char c)        { bool BoolValue = false;            if (Convert ...

  9. threadpool 的配置实用

    //spring mvc文件中的配置 <!-- ThreadPoolExecutor --> <bean id="threadPoolTaskExecutor" ...

  10. js DIV延时几秒后消失或显示代码

    1.最常用的方法:  代码如下 复制代码 <script language='javascript' type='text/javascript'> $(function () {     ...