add edu-riscv64 RTC test example

This commit is contained in:
wuzheng
2022-11-11 17:39:03 +08:00
parent e746639f8a
commit e7175c2745
14 changed files with 1346 additions and 1 deletions
@@ -7,3 +7,5 @@ void TestI2C(void)
{
}
PRIV_SHELL_CMD_FUNCTION(TestI2C, a iic test sample, PRIV_SHELL_CMD_MAIN_ATTR);
@@ -0,0 +1,38 @@
#include <stdio.h>
#include <string.h>
#include <transform.h>
void TestRTC(int argc,char *argv[])
{
int rtc_fd = PrivOpen(RTC_DEV_DRIVER, O_RDWR);
if(rtc_fd<0){
printf("open rtc fd error:%d\n",rtc_fd);
return;
}
if(argc>1){
int times = atoi(argv[1]);
printf("Time will be printf times %d\n",times);
struct RtcDrvConfigureParam rtc_para;
rtc_para.rtc_operation_cmd = OPER_RTC_SET_TIME;
*(rtc_para.time) = 0;
struct PrivIoctlCfg ioctl_cfg;
ioctl_cfg.ioctl_driver_type = RTC_TYPE;
ioctl_cfg.args = (void *)&rtc_para;
PrivIoctl(rtc_fd,0,&ioctl_cfg);
rtc_para.rtc_operation_cmd = OPER_RTC_GET_TIME;
for(size_t i=0;i<times;i++){
PrivIoctl(rtc_fd,0,&ioctl_cfg);
printf("The time now is %x,%d\n",*(rtc_para.time),*(rtc_para.time));
PrivTaskDelay(5000);
}
}
return;
}
PRIV_SHELL_CMD_FUNCTION(TestRTC, a rtc test sample, PRIV_SHELL_CMD_MAIN_ATTR);
@@ -169,6 +169,7 @@ int PrivIoctl(int fd, int cmd, void *args)
case LCD_TYPE:
ret = PrivLcdIoctl(fd, cmd, ioctl_cfg->args);
break;
case RTC_TYPE:
case ADC_TYPE:
case DAC_TYPE:
case WDT_TYPE:
@@ -149,6 +149,7 @@ enum IoctlDriverType
ADC_TYPE,
DAC_TYPE,
WDT_TYPE,
RTC_TYPE,
DEFAULT_TYPE,
};
@@ -193,6 +194,12 @@ typedef struct
uint16_t press;
}TouchDataParam;
struct RtcDrvConfigureParam
{
int rtc_operation_cmd;
time_t *time;
};
#define PRIV_SYSTICK_GET (CurrentTicksGain())
#define PRIV_LCD_DEV "/dev/lcd_dev"
#define MY_DISP_HOR_RES BSP_LCD_Y_MAX