#include "stm32f1xx_hal.h" #include #include #include void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin){ printf("toggling pin\n"); } GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin){ printf("reading pin, returning 0\n"); return GPIO_PIN_RESET; } void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState){ printf("writing pin\n"); } static void* tim_handler(void* arg){ TIM_HandleTypeDef* htim = arg; while(htim->started){ uint64_t delay_ps = 15625 * htim->presc * htim->period; printf("delay : %lu\n", delay_ps); usleep(delay_ps / 1000000); HAL_TIM_PeriodElapsedCallback(htim); } return NULL; } HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim){ printf("starting timer\n"); htim->started = 1; pthread_t tim_thread; pthread_create(&tim_thread, NULL, tim_handler, htim); return HAL_STATUS_OK; } HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim){ printf("stopping timer\n"); htim->started = 0; return HAL_STATUS_OK; }