diff --git a/APP_Framework/Applications/app_test/test_hwtimer.c b/APP_Framework/Applications/app_test/test_hwtimer.c index 28051d446..9a49dd74c 100644 --- a/APP_Framework/Applications/app_test/test_hwtimer.c +++ b/APP_Framework/Applications/app_test/test_hwtimer.c @@ -22,7 +22,7 @@ #include #ifdef ADD_XIZI_FEATURES -#define BSP_LED_PIN 29 +#define BSP_LED_PIN 134 #define NULL_PARAMETER 0 static uint16_t pin_fd=0; @@ -30,6 +30,7 @@ static struct PinStat pin_led; void LedFlip(void *parameter) { + printf("%s val %d time %d\n", __func__, pin_led.val, PrivGetTickTime()); pin_led.pin = BSP_LED_PIN; pin_led.val = !pin_led.val; PrivWrite(pin_fd, &pin_led, NULL_PARAMETER); @@ -37,7 +38,7 @@ void LedFlip(void *parameter) void TestHwTimer(void) { - x_ticks_t period = 1; + uint32_t period_ms = 500; pin_fd = PrivOpen(HWTIMER_PIN_DEV_DRIVER, O_RDWR); if(pin_fd<0) { @@ -75,7 +76,7 @@ void TestHwTimer(void) return; } - ioctl_cfg.args = (void *). + ioctl_cfg.args = (void *)&period_ms; if (0 != PrivIoctl(timer_fd, OPE_CFG, &ioctl_cfg)) { printf("timer pin fd error %d\n", pin_fd); PrivClose(pin_fd); diff --git a/Ubiquitous/XiZi_IIoT/board/edu-arm32/third_party_driver/timer/connect_hwtimer.c b/Ubiquitous/XiZi_IIoT/board/edu-arm32/third_party_driver/timer/connect_hwtimer.c index dec5de52e..6f0f2818c 100644 --- a/Ubiquitous/XiZi_IIoT/board/edu-arm32/third_party_driver/timer/connect_hwtimer.c +++ b/Ubiquitous/XiZi_IIoT/board/edu-arm32/third_party_driver/timer/connect_hwtimer.c @@ -20,13 +20,12 @@ #include -#define TMR0_CMP_VAL 1000 +#define TMR0_CMP_VAL (100000000U / 1024U / 2 - 1U) #define TMR0x ((CM_TMR0_TypeDef *)CM_TMR0_1_BASE) #define TMR0_CH_x (TMR0_CH_A) #define INTSEL_REG ((uint32_t)(&CM_INTC->SEL0)) #define TIMER0_IRQn (18) - void (*callback_function)(void *) ; static void Timer0Callback(int vector, void *param) @@ -47,10 +46,10 @@ static uint32 HwtimerOpen(void *dev) /* TIMER0 basetimer function initialize */ (void)TMR0_StructInit(&stcTmr0Init); - stcTmr0Init.u32ClockDiv = TMR0_CLK_DIV128; /* Config clock division */ - stcTmr0Init.u32ClockSrc = TMR0_CLK_SRC_INTERN_CLK; /* Chose clock source */ - stcTmr0Init.u32Func = TMR0_FUNC_CMP; /* Timer0 compare mode */ - stcTmr0Init.u16CompareValue = TMR0_CMP_VAL; /* Set compare register data */ + stcTmr0Init.u32ClockDiv = TMR0_CLK_DIV1024; /* Config clock division */ + stcTmr0Init.u32ClockSrc = TMR0_CLK_SRC_INTERN_CLK; /* Chose clock source */ + stcTmr0Init.u32Func = TMR0_FUNC_CMP; /* Timer0 compare mode */ + stcTmr0Init.u16CompareValue = TMR0_CMP_VAL; /* Set compare register data */ (void)TMR0_Init(TMR0x, TMR0_CH_x, &stcTmr0Init); // DelayKTask(1); @@ -98,7 +97,8 @@ static uint32 HwtimerDrvConfigure(void *drv, struct BusConfigureInfo *configure_ break; case OPE_CFG: TMR0_ClearStatus(TMR0x, TMR0_FLAG_CMP_A); - TMR0_SetCompareValue(TMR0x, TMR0_CH_x, *((int *)configure_info->private_data) ); + uint32_t cmp_value = *((uint32_t *)configure_info->private_data) * 100;//1ms 100, max 655ms 65535 + TMR0_SetCompareValue(TMR0x, TMR0_CH_x, (uint16_t)cmp_value); /* Timer0 interrupt function Enable */ TMR0_SetCountValue(TMR0x, TMR0_CH_x, 0x0000); TMR0_Start(TMR0x, TMR0_CH_x);