2136|1

1297

帖子

2

TA的资源

纯净的硅(中级)

楼主
 

【Atmel SAM R21创意大赛周计划】 02 自己添加asf实现delay和方波输出 [复制链接]

今天从例程过渡到自己建project,首先选

然后按照板子,输入R21就找到了

ok以后会在solution里面出现新的project,为了编译,需要设为startup

这个自己建的就很简单的样子,结构也很清晰,有main,哈哈

代码很简单,就是有按键按下,灯就亮,抬起呢,灯就灭了。

当然默认里面是没有delay的,那delay去哪里弄呢?这就要用到asf了。alt+W走起。可以看到右边是已经有的asf,而左边则是还能添加的asf。顺利找到delay,居然还分systick和cycle的,想来应该前者用systick实现的,后者用for或者while循环的吧。我们还是选systick。add一下,apply就好了

这时候可以在右边看到多了一个common2,里面就有delay。太神奇的,一个common还要分2个目录。。。。

至于这里面的delay怎么用,看过例程的应该很熟悉了。当然也可以去看在线的API,在asf explore中点API 文档,就可以链接过去了。不过有点慢是真的!!

实际在执行的时候,我们调用的是一个宏定义,当然如果我们再看下去,会发现下面还是一个宏定义。真不明白为啥要这样呢,好晕。

然后我们开始自己添加代码了,delay_init();敲了前面几个进去,会有自动提示出来的,挺好用的(这个效果不好截图,大家自己试试,可能对微软编译环境熟悉的都碰到过)。可以看到这里没有例程中用的delay_cycle,但是可以试试delay_us,看看精度如何。每次都翻转LED状态。相当于500K的方波。

实际测试就没有这么理想了,这个一个周期有7.2us。当然按照上面的写法,还要加上pin翻转的时间。于是对不同us_cnt做了测试,实际情况记录如下:
us_cnt=1,高或低电平时间=7.2us
us_cnt=5,高或低电平时间=18us
us_cnt=10,高或低电平时间=33.2us
估算一个pin翻转大概要5us,而这里的us延时大概要3us(2.87)
至于ms级的延时,从1ms开始大概就是1%的误差。考虑到一般用这种延时是粗略性的,ms延时精度足够,但是us级的延时,还是有点不靠谱的。

此帖出自单片机论坛

最新回复

过来看看~~~~~~~~~~~~~~~~  详情 回复 发表于 2015-1-14 15:34
点赞 关注
 

回复
举报

1119

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
过来看看~~~~~~~~~~~~~~~~
此帖出自单片机论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表