折腾了几天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. C# 技巧(1) C# 转换时间戳

    经常发现很多地方使用一个时间戳表示时间.比如: 1370838759  表示 2013年6月10日 12:32:39. 我们就需要一个工具,方便地转换这种时间格式 什么是时间戳? 时间戳, 又叫Uni ...

  2. 通用的web系统数据导出功能设计实现(导出excel2003/2007 word pdf zip等)

    前言 我们在做web系统中,导出也是很常用的一个功能,如果每一个数据列表都要对应写一个导出的方法不太现实.现在就想设计一个共通的功能来实现这个导出. 需求分析 在开始之前我们先要明白我们要实现怎样一个 ...

  3. iOS开发UI篇—UITableview控件基本使用

    iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...

  4. iOS开发数据库篇—FMDB数据库队列

    iOS开发数据库篇—FMDB数据库队列 一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: // // YYViewContr ...

  5. Android Spinner控件数据绑定

    Java代码

  6. wdcp 打开网页显示 Apache 2 Test Page powered by CentOS

    是因为更新过系统,安装并更新了系统自带的apache 执行这个命令即可 #ln -sf /www/wdlinux/init.d/httpd /etc/rc.d/init.d/httpd#reboot

  7. 网站优化之Asp.Net篇<一>

    一>禁用viewstate. 二>禁用动态编译.访问一个Aspx文件时 会编译为一个新的类放在C盘Asp.net临时文件夹下.下次请求不会再编译,会把先前的编译结果返回. 任何对Asp.n ...

  8. C# winform程序如何打包64位安装程序

    故事背景: 原来在客户电脑上工作的很正常的程序,在客户将其操作系统从32位换为64位之后,出现了不能正常使用的问题. --------------------------- 解决办法: 1:将解决方案 ...

  9. (spring-第17回【AOP基础篇】) 创建增强类

    一.   增强类包含的信息: a)   横切逻辑(插入的具体代码) b)   部分连接点信息(在方法的哪个位置插入代码,比如方法前.方法后等). 二.   增强的类型 每一种增强有一个需要实现的增强类 ...

  10. 浅谈SEO-收录(二)

    如何更好的让搜索引擎收录网站中的内容,想要被良好的收录,可以尝试一下几点: 一.机器可读 百度通过一个叫做Baiduspider的程序抓取互联网上的网页, 经过处理后建入索引中,目前只支持读文本,fl ...