MultiTimer 可无限扩展的定时器移植使用
MultiTimer可无限扩展的定时器。记录下移植使用过程。
·
MultiTimer 可无限扩展的定时器。记录下移植使用过程
1.下载源码
2.Keil中添加源码

3.提供时基接口
uint64_t PlatformTicksGetFunc(void)
{
return (uint64_t)HAL_GetTick();
}
4.注册使用
MultiTimer timer1;
MultiTimer timer2;
/**
* @brief The application entry point.
* @retval int
*/
int main(void)
{
/* USER CODE BEGIN 1 */
uint8_t ltestBuff[1] = {0xff};
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_I2C2_Init();
HAL_I2C_Master_Transmit(&hi2c2, PCF8574_ADDR, ltestBuff, 1, 1000);
MX_USART2_UART_Init();
// MX_FATFS_Init();
// MX_USB_HOST_Init();
/* USER CODE BEGIN 2 */
multiTimerInstall(PlatformTicksGetFunc);
multiTimerStart(&timer1, 500, timer1_callback, NULL);
multiTimerStart(&timer2, 1000, timer2_callback, NULL);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
multiTimerYield();
/* USER CODE BEGIN 3 */
}
/* USER CODE END 3 */
}
5.回调
void timer1_callback(MultiTimer* timer, void* userData)
{
printf("timer1 timeout!\r\n");
// restart
multiTimerStart(timer, 500, timer1_callback, NULL);
}
void timer2_callback(MultiTimer* timer, void* userData)
{
printf("timer2 timeout!\r\n");
// restart
multiTimerStart(timer, 1000, timer2_callback, NULL);
}
6.测试

更多推荐



所有评论(0)