1.功能实现
本代码主要实现了日期星期和时间显示以及心率和血氧浓度的检测功能。
2.硬件连接
使用了MAX32600的一个SPI接口、一个I2C接口和一个UART接口。
1.14寸LCD屏引脚 | 板卡引脚 |
---|---|
SCL | P0_6 |
SDA | P0_5 |
DC | P0_12 |
CS | P0_7 |
RES | RSTN |
VCC/GND | 单独供电3.3V(防止屏幕供电对控制器USB供电影响) |
MAX30100引脚 | |
SCL | P0_8 |
SDA | P0_9 |
VCC/GND | USB供电 |
时间校准 | |
USB转TTL的TX | P0_11 |
USB转TTL的RX | P0_10 |
3.数据处理
时间显示代码
static void display_real_time(void)
{
uint32_t ge, shi, bai, qian, tmp;
uint8_t enum_tmp;
r_time.sec = RTC_GetSecond();
r_time.update.bit.usec = UPDATE_ENABLE;
/* sec */
tmp = r_time.sec + p_time.sec[1] * 10 + p_time.sec[0];
if((tmp % 60) == 0)
{
r_time.min = tmp / 60;
r_time.update.bit.umin = UPDATE_ENABLE;
}
tmp %= 60;
ge = tmp % 10;
shi = tmp / 10;
if(r_time.update.bit.usec)
{
r_time.update.bit.usec = UPDATE_DISABLE;
LCD_ShowIntNum(WATCH_W + 120, WATCH_H, shi, 1, WHITE, BLACK, 32);
LCD_ShowIntNum(WATCH_W + 140, WATCH_H, ge, 1, WHITE, BLACK, 32);
}
/* min */
tmp = r_time.min + p_time.min[1] * 10 + p_time.min[0];
if((tmp % 60) == 0)
{
r_time.hr = tmp / 60;
r_time.update.bit.uhr = UPDATE_ENABLE;
}
tmp %= 60;
ge = tmp % 10;
shi = tmp / 10;
if(r_time.update.bit.umin)
{
r_time.update.bit.umin = UPDATE_DISABLE;
LCD_ShowIntNum(WATCH_W + 60, WATCH_H, shi, 1, WHITE, BLACK, 32);
LCD_ShowIntNum(WATCH_W + 80, WATCH_H, ge, 1, WHITE, BLACK, 32);
LCD_ShowChar(WATCH_W + 100, WATCH_H - 2, ':', WHITE, BLACK, 32, 0);
}
/* hr */
tmp = r_time.hr + p_time.hr[1] * 10 + p_time.hr[0];
if((tmp % 24) == 0)
{
r_time.day = tmp /