打印
[应用相关]

maple / arduino ds1302驱动库和例程

[复制链接]
1454|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lefeng|  楼主 | 2017-2-26 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

库在附件中

例程(库中自带的)

/*
Example sketch for interfacing with the DS1302 timekeeping chip.

Copyright (c) 2009, Matt Sparks
All rights reserved.

http://quadpoint.org/projects/arduino-ds1302
*/
#include <stdio.h>
#include <string.h>
#include <DS1302.h>

/* Set the appropriate digital I/O pin connections */
unsigned int CE_PIN   = 3;
unsigned int IO_PIN   = 4;
unsigned int SCLK_PIN = 5;

/* Create buffers */
char buf[50];
char day[10];

/* Create a DS1302 object */
DS1302 rtc(CE_PIN, IO_PIN, SCLK_PIN);


void print_time()
{
  /* Get the current time and date from the chip */
  Time t = rtc.time();

  /* Name the day of the week */
  memset(day, 0, sizeof(day));  /* clear day buffer */
  switch (t.day) {
    case 1:
      strcpy(day, "Sunday");
      break;
    case 2:
      strcpy(day, "Monday");
      break;
    case 3:
      strcpy(day, "Tuesday");
      break;
    case 4:
      strcpy(day, "Wednesday");
      break;
    case 5:
      strcpy(day, "Thursday");
      break;
    case 6:
      strcpy(day, "Friday");
      break;
    case 7:
      strcpy(day, "Saturday");
      break;
  }

  /* Format the time and date and insert into the temporary buffer */
  snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d",
           day,
           t.yr, t.mon, t.date,
           t.hr, t.min, t.sec);

  /* Print the formatted string to serial so we can see the time */
  SerialUSB.println(buf);
}


void setup()
{


  /* Initialize a new chip by turning off write protection and clearing the
     clock halt flag. These methods needn't always be called. See the DS1302
     datasheet for details. */
  rtc.write_protect(false);
  rtc.halt(false);

  /* Make a new time object to set the date and time */
  /*   Tuesday, May 19, 2009 at 21:16:37.            */
  Time t(2009, 5, 19, 21, 16, 37, 3);

  /* Set the time and date on the chip */
  rtc.time(t);
}


/* Loop and print the time every second */
void loop()
{
  print_time();
  delay(1000);
}

ds1302.rar

4.58 KB

沙发
wahahaheihei| | 2017-2-26 21:10 | 只看该作者
这个开发板在测评板块有,网站主页上有个测评。

使用特权

评论回复
板凳
wahahaheihei| | 2017-2-26 21:12 | 只看该作者
地板
wahahaheihei| | 2017-2-26 21:13 | 只看该作者

[size=18.018px]Maple mini(STM32F103)软件开发流程

[size=18.018px]Maple Mini是Leaflabs推出的Maple的微型版本,其大小相当于一片口香糖。尽管尺寸很小,Maple Mini上还是有一个mini-B型USB接口,有LDO稳压器,可以非常方便的作为一个ARM处理器平台。Maple Mini适用在对空间要求苛刻的场合,也可以插在面包板上做原型开发。

[size=18.018px]由于官方没有提供移植开发环境至Arduino IDE官方最新版的json文件链,因此我们只能找到Leaflabs移植好的变种Arduino—maple-ide-0.0.12。这也是目前最新的一个版本。经笔者测试兼容Win10,如果使用的是Win8.1或更新版本的Windows系统,在安装驱动前需要禁用驱动程序强制签名。具体步骤请在搜索引擎搜索“禁用驱动程序强制签名”。

[size=18.018px]下载好Maple IDE后,解压缩,其中drivers文件夹就是所需要的驱动程序,连接PC和Maple Mini开发板,打开设备管理器。

[size=18.018px]

[size=18.018px]选择Maple 003,单击右键手动安装驱动程序,如下图,找到驱动文件夹。

[size=18.018px]

[size=18.018px]完成后,感叹号消失,表明驱动安装成功。

[size=18.018px]

[size=18.018px]接下来启动Maple Mini,选择开发板,建立示例程序。

[size=18.018px]单击:Tools—Board—LeafLabs Maple Mini Rev2 to RAM(或Flash)。注意到这里有两种选择,一个是下载到RAM,一个是把目标代码下载到Flash。有什么区别呢?下载到RAM后运行速度快,断电后呢,程序不保存,下载到Flash断电后程序不消失,重新上电可以继续运行。

[size=18.018px]

[size=18.018px]接下来选择示例程序。

[size=18.018px]单击File—Examples—Digital—Button。这里我们选择个按键例程测试,见下图,其他的例程也都是可以的。

[size=18.018px]

[size=18.018px]之后弹出例程窗口,我们可以看到界面是英文的。

[size=18.018px]

[size=18.018px]如上图所示,其中向右的箭头就是Upload(上传)按钮,我们现在可以连接Maple mini和PC。单击Upload按钮。

[size=18.018px]之后在下面绿色消息窗口显示处理进度与内容。

[size=18.018px]

[size=18.018px]下面我们通过按下开发板的唯一用户按键试试。

[size=18.018px]我们回过头来再来看代码中的内容,采用了宏定义替代了Arduino惯用的数字编号,那么在哪儿找到这个宏定义的文件呢?答案就在\hardware\leaflabs\cores\maple\maple_mini.h头文件。如下图所示。

[size=18.018px]

[size=18.018px]如上图所示,根据头文件中的宏定义,可以看出来,按键是在32号管脚,LED是在33管脚,对照开发板上标注的编号,刚好对应。我们根据这个头文件也知道了,如果使用其他编号的管脚,可以使用什么宏定义来替代管脚编码。而对于其他的操作也可以在同一文件夹下的其他头文件中找到,比如isButtonPressde()、toggleLED()等,这些均在io.h文件。

[size=18.018px]写到这里,大家应该发现了吧,不管Arduino怎么变化,总之都是在Arduino技术规范内的,不管是AVR的八位机,还是ARM的32位机器,只要在这个标准内,都可以用简单的Arduino标准,来操作。

[size=18.018px]我们也可以清楚的看出,这两个开发板虽然核心千差万别,但是开发流程几乎一模一样,除了Maple mini需要使用变种版的Arduino来实现外,而对于寄存器和外设的处理方式都是符合Arduino标准的。我们唯一要做的就是了解开发板提供了哪些资源,这些资源在Arduino的框架里定义成了什么名字,另外就是根据开发板的原理图,加入自己需要的部分。而对于想全面掌控MCU系统的每个细节的人,还是需要按照传统的方法来做,不过Arduino的确缩减了嵌入式的学习所用的时间成本,以及更加方便的使用体验,更适合要求不是非常非常高的用户和应用的使用。

[size=18.018px]另外本测评中所选用的开发板上,均是只有一片MCU,无需使用编程器进行烧录,因为他们都内置了Bootloader程序,这也做到了真正的单片机的单片系统应用。


使用特权

评论回复
5
wahahaheihei| | 2017-2-26 21:14 | 只看该作者
哈哈,是不是我转来的内容很强大。包括怎么玩,用什么软件玩,都清楚了。

使用特权

评论回复
6
xuanhuanzi| | 2018-6-25 16:13 | 只看该作者
xuexi学习。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

200

主题

1087

帖子

0

粉丝