刚学M3同纸的一点心得,内附上API函数大全极品上手资料

2019-07-30 19:38发布

本帖最后由 dsl1784 于 2011-11-18 11:45 编辑

额图片不知道怎么看不见了。这样,我把WORD文档上传了。希望对大家有点帮助。
  首先我也是一个新手,1110号才拿到板子,心里那个高兴的。我以前学过51,会点AVR。拿到M3我首先就去找资料了。说实话没想到自己会得到,相信各位也得到的大大们也是这样吧。
M3编程给我第一感觉就是上手太容易了。关键是学会编写第一个程序,并且能运行。我的第一个程序费了我好半天,没得法。那我就分享下我的第一个程序,给大家入门的一点我的提示。

1 新建工程我就不说了哈,会KIE的都会。关键就是ARM系列的单片机都要有一个启动文件Startup.s。这个文件在创建的时候会问你添加否。如图
建立.jpg
你直接点是。
2 接着会出现如下图画面
工程2.jpg

Kiel提供了一个非常好的工程管理方法。你接着点
按键.jpg
将出现窗口,改为如下图。当然你也可以改为你喜欢的方式。Startup放启动文件。User放你的个人程序。DriverLib放库文件。按Add File分别添加。
窗口一.jpg
关于DriverLib这个文件在这个位置xKeilARMRV31LIBLuminary 其中X为你的安装盘符。这个文件是编译器自带的API函数的库。

3 说完工程文件的管理了,那么再来说说这一个程序要运行起来,还要怎么做。
首先是初始化:(1)时钟初始化。(2)各个模块的使能,功能配置初始化初始化。
初始化建议用模块化,便于以后程序的移植。我用的是一个 Systeminit.c来保存各种初始化的函数的。初始化基本全部用的API函数。我在这里说也很不方便,我直接把我的第一个工程发上来,给那些第一次接触的看。
初始化完了,就是用户的程序了。跟其他单片机的写法一样。


说了这么多我来稍微谈下对M3的感受。
M3与其他单片机程序的操作不同就只有一点。对单片机的操作全可以用官方写好的函数来使用。你初始化也好,你引脚高低电平的控制也好,都是用这些接口函数。你再也不用与底层的各个控制寄存器打交道了。你可以直接用完全语言理解的方式来控制各种资源。比如GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_0,GPIO_PIN_0)。你要设置PD0为高就可以这样了。当然大家风格各异,写法可以自己来。如果要反转引脚电平你可以 GPIOPinWrite(GPIO_PORTC_BASE,GPIO_PIN_5,~GPIOPinRead(GPIO_PORTC_BASE,GPIO_PIN_5));或者你抑或当前引脚电平再写。所以一切你都可以更直观的来编写自己的程序。

那么这么多API函数怎么记得住?首先,API函数有官方介绍,我这有资料,网上可以下很多。或者你可以自己看各种头文件。这些头文件包含了你要用到的外设的API封装。这些头文件的操作在Driverlib中,你看不到。但是你可以看到各种API的声明形式。在这些头文件中:
#include  <hw_types.h>//一些类型的宏定义
#include  <hw_memmap.h> //定义内存的地址,如寄存器,程序,数据段
#include  <hw_ints.h>     //中断序列号的宏定义
#include  <interrupt.h>   //中断向量表的操作函数
#include  <sysctl.h>       //系统各寄存器的操作宏定义(设置项)
#include  <gpio.h>         //GPIO的操作(宏定义+函数)
//#include <debug.h>   //调试
#include <systick.h>    //时钟节拍的各种设置
//#include <adc.h>     //AD
//#include <lm3s811.h> //LM3S811的各种寄存器设置
//#include <timer.h>     //定时器
在这些头文件里你都可以找到对应的API。你要用到某些功能的时候你就要包含这些头文件了。

Startup.s是个汇编文件,我其他作用不知道。但是我看见在这里面可以中断程序入口设置。具体就是,你在里面找到对应的地方
extern 你的中断程序名字;
DCD  你的中断程序名字;
如下图 将时钟节拍的中断注册
中断.jpg
ARM系列还有一个不同就是volatile变量的声明,以及在中断中的应用。大家可以去看看,这个百度比我说得好。我这只是一个刚刚接触者的感受。

这里是我的第一个工程。献给各位刚刚上手的同纸。
各位大大。加油呀。
我邮箱djc80s@qq.com。欢迎资源共享。


  昨天看了下小3的定时器。有点小郁闷,16位定时器周期捕获的时钟不能分频。定时器只能16位溢出能分频。定时器PWM不能分频倒无所谓了,因为有更强大的PWM模块。
  说到这个不得不说说PWM,这个绝对是个极品。首先自带死区延时哟。以前用AVR做逆变,那个痛苦的,用硬件延时的,加了一堆。现在这家伙直接自带死区延时。3个PWM可以调节同时基,同时启动,装载匹配值同步启动。还有PWM自带很多中断类型,不如计数0,装载完成,计数上升或下降匹配。有了这些如果你是做逆变的你就会明白强大了。不论是单极性双极性逆变你都可以做出来。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。