注册 登录
电子工程世界-论坛 返回首页 EEWORLD首页 频道 EE大学堂 下载中心 Datasheet 专题
jqh_111的个人空间 https://home.eeworld.com.cn/space-uid-404511.html [收藏] [复制] [分享] [RSS]
日志

SAM D21 Xplained Pro-ASF的初次使用

已有 1106 次阅读2014-10-28 22:51 |个人分类:程序类


ASF的初次使用

最近工作上的事情好多好多,学习ATMEL的时间好难找,进度比较慢。这篇帖子主要是写,根据现有的工程文件,添加定时器驱动程序,然后调用定时器,完成一个定时功能。

       不过,做这项工作的时候,出现了问题,至今我也没能解决它。就是:自己建的工程文件,添加定时器驱动文件后,编译完成。在调试的时候发现定时器初始化过不了,现象就是死机状态。希望有遇到过同样问题的朋友,能帮助解答下。

       最后呢,我只能通过基于例程PORT_QUIK_START,添加想要的定时器驱动文件,然后就能正常运行了。

       接下来是详细操作步骤:

  • 选择NEW EXAMPLE PROJECT会弹出如下画面,
  • 选择DEVICE FAMILY里的SAM D,32bit;点击Kti,Category里选择Driver快速的找到PORTQUICK START,接下来点击OK,同意,finish。
    如下:
           之后它会自动生成如下图所示的工程文件,既然这是一个例程,你完全可以将它下载到评估板上,运行一下看现象。
  • 接下来我们就从这里开始自己的添加和裁剪了。看到上图的ASF_Wizard没,选择它。选择PROJECT,----PORT_QUICK_START。出现如下图所示的画面,
    依然在show的对应框里选择drivers,选择下面的内容,点击Add,点击Apply,
           定时器这个驱动库文件就算添加进你的工程文件了,这里有个callback的选项意思是可以用回调函数,一般用于中断,这里默认选它了,然后是调用定时器的功能了。
  • 如图,右边文件框架里多了个tc文件夹,里面放着定时器的驱动,和指导头文件。
           左边有这么一段英文,In this use case,the TC will be used as a timer,to generate overflowand compare match callbacks.In the callbacks the on_board LED is toggled.
           它简单的描述了,在这种情况下,定时器模块会被用作一个定时器,会产生定时溢出并比较匹配回调条件,在该条件下,板载的LED的状态会被翻转。下面的英文条目列出了,定时器的设置情况。
  • 接下来这个截图很重要了,它详细讲解了如何设置定时器,
    着重看井号开头的英文,我来简单的跟一遍,第一个井号后面:为定时器模块创建一个软件例子结构体,该结构体存储了定时器使用过程中的驱动状态。所以回到工程文件,在主函数上方定义一个函数名为:void timer_setup();函数里面的配置操作,遵循井号提示。
           在主函数上方定义了个定时器设置函数,如图。
           完成该函数的编写,并调试,结果如下:
    最后再配置始终头文件,因为这里使用了GCLK_GENERATOR_1,所以需要在头文件里对应的位置将其改为TRUE(提示:如果确实不知道自己应该改哪些位置的值,可以将定时器例程的始终配置头文件拷到这里)。不然执行函数tc_init(&timer_test,TC3,&timer_conf);时会死在同步时钟检测。完成了所有这些操作后,我们可以编译并下载,板子会运行这段程序,并且以65536/32768=2秒的周期翻转LED的状态。
    好了,利用普通IO口功能工程文件改为定时功能,调用ASF库函数的操作就完成了,仅作为一个初期使用ATMEL SAM D21 Xplained pro板子和ASF库文件的例子。后期会继续使用其他外设资源,并配合实物。


本文来自论坛,点击查看完整帖子内容。

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

热门文章