arduino使用stm32f1, 读取RTC,TM1637显示

2019-07-25 11:47发布

RTC_TM1637_01.jpg
RTC_TM1637_00.jpg
RTC_TM1637_02.jpg
RTC_TM1637_03.jpg
RTC_TM1637_04.jpg
RTC_TM1637_05.jpg
RTC_TM1637_06.jpg
RTC_TM1637_07.JPG
最后结果 发现,我设置的时间 跟读取的对不上,
而且时间也没跳,是不是读了别的那个地址。
那个高手帮忙看看。。。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
wangrupin
2019-07-25 12:00
本帖最后由 wangrupin 于 2017-3-14 22:57 编辑

高手们,帮忙看看, 哪里写错?

开发环境搭建 见:http://www.openedv.com/forum.php?mod=viewthread&tid=27100
TM1637的arduino库:https://github.com/avishorp/TM1637

代码:
#include <Arduino.h>
#include <TM1637Display.h>
#include "RTClock.h"
//showNumberDec(int num, bool leading_zero, uint8_t length, uint8_t pos)
//display.showNumberDec(8,true);   Show decimal numbers with/without leading zeros
//display.showNumberDec(0153, True, 4, 0); showNumberDec(int num, bool leading_zero, uint8_t length, uint8_t pos)
#define BOARD_LED_PIN PC13  // Module connection pins (Digital Pins)
#define CLK PB6
#define DIO PB7
TM1637Display display(CLK, DIO);
uint8_t data[]={ 0xff, 0xff, 0xff, 0xff };
RTClock rTime;
time_t timeR;
struct tm *tr;
void setup()
{
  pinMode(BOARD_LED_PIN, OUTPUT);  
  //RTClock(RTCSEL_LSE, 0);  //LSE should be 32768 Hz.
  rtc_init(RTCSEL_LSE);//LSE should be 32768 Hz.
  rtc_set_prescaler_load(0x7fff);//32767+1 Hz.
  delay(1000);     
  display.setBrightness(0x0f);
  display.setSegments(data);
  delay(5000);
timeR=0x58C85A49;
rTime.setTime(timeR);
  data[1] &= 0x7F;
  display.setSegments(data);
  delay(1000);
}
void loop()
{   
  volatile uint8_t ss,mm,hh,m0,m1,h0,h1;
  rTime.getTime(tr);
  ss=tr->tm_sec;
  mm=tr->tm_min;
  hh=tr->tm_hour;
  m1=mm/10;
  m0=mm%10;
  h1=hh/10;
  h0=hh%10;
  data[0] = display.encodeDigit(h1);
  data[1] = display.encodeDigit(h0);
  data[2] = display.encodeDigit(m1);
  data[3] = display.encodeDigit(m0);
  data[1] |= 0x80;
  display.setSegments(data);
  digitalWrite(BOARD_LED_PIN, LOW);
  delay(500);
  data[1] &= 0x7F;
  display.setSegments(data);
  digitalWrite(BOARD_LED_PIN, HIGH);
  delay(500);
}

一周热门 更多>