80 lines
2.8 KiB
C
80 lines
2.8 KiB
C
#pragma once
|
|
|
|
#include <stdio.h>
|
|
#include <stdint.h>
|
|
|
|
typedef struct {
|
|
uint8_t index;
|
|
} GPIO_TypeDef;
|
|
|
|
typedef struct{
|
|
uint16_t presc;
|
|
uint16_t period;
|
|
volatile uint8_t started;
|
|
} TIM_HandleTypeDef;
|
|
typedef int HAL_StatusTypeDef;
|
|
|
|
#define HAL_STATUS_OK 0
|
|
|
|
#define GPIO_PIN_0 ((uint16_t)0x0001) /* Pin 0 selected */
|
|
#define GPIO_PIN_1 ((uint16_t)0x0002) /* Pin 1 selected */
|
|
#define GPIO_PIN_2 ((uint16_t)0x0004) /* Pin 2 selected */
|
|
#define GPIO_PIN_3 ((uint16_t)0x0008) /* Pin 3 selected */
|
|
#define GPIO_PIN_4 ((uint16_t)0x0010) /* Pin 4 selected */
|
|
#define GPIO_PIN_5 ((uint16_t)0x0020) /* Pin 5 selected */
|
|
#define GPIO_PIN_6 ((uint16_t)0x0040) /* Pin 6 selected */
|
|
#define GPIO_PIN_7 ((uint16_t)0x0080) /* Pin 7 selected */
|
|
#define GPIO_PIN_8 ((uint16_t)0x0100) /* Pin 8 selected */
|
|
#define GPIO_PIN_9 ((uint16_t)0x0200) /* Pin 9 selected */
|
|
#define GPIO_PIN_10 ((uint16_t)0x0400) /* Pin 10 selected */
|
|
#define GPIO_PIN_11 ((uint16_t)0x0800) /* Pin 11 selected */
|
|
#define GPIO_PIN_12 ((uint16_t)0x1000) /* Pin 12 selected */
|
|
#define GPIO_PIN_13 ((uint16_t)0x2000) /* Pin 13 selected */
|
|
#define GPIO_PIN_14 ((uint16_t)0x4000) /* Pin 14 selected */
|
|
#define GPIO_PIN_15 ((uint16_t)0x8000) /* Pin 15 selected */
|
|
#define GPIO_PIN_All ((uint16_t)0xFFFF) /* All pins selected */
|
|
|
|
static GPIO_TypeDef GPIOA_b = (GPIO_TypeDef){
|
|
.index = 0,
|
|
};
|
|
static GPIO_TypeDef GPIOB_b = (GPIO_TypeDef){
|
|
.index = 1,
|
|
};
|
|
static GPIO_TypeDef GPIOC_b = (GPIO_TypeDef){
|
|
.index = 2,
|
|
};
|
|
static GPIO_TypeDef GPIOD_b = (GPIO_TypeDef){
|
|
.index = 3,
|
|
};
|
|
static GPIO_TypeDef GPIOE_b = (GPIO_TypeDef){
|
|
.index = 4,
|
|
};
|
|
#define GPIOA &GPIOA_b
|
|
#define GPIOB &GPIOB_b
|
|
#define GPIOC &GPIOC_b
|
|
#define GPIOD &GPIOD_b
|
|
#define GPIOE &GPIOE_b
|
|
|
|
typedef enum
|
|
{
|
|
GPIO_PIN_RESET = 0u,
|
|
GPIO_PIN_SET
|
|
} GPIO_PinState;
|
|
|
|
void HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
|
|
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin);
|
|
void HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState);
|
|
|
|
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
|
__HANDLE__->period = __AUTORELOAD__; \
|
|
printf("setting period %d\n", __AUTORELOAD__);
|
|
|
|
#define __HAL_TIM_SET_PRESCALER(__HANDLE__, __PRESC__) \
|
|
__HANDLE__->presc = __PRESC__; \
|
|
printf("setting presc %d\n", __PRESC__);
|
|
|
|
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim);
|
|
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim);
|
|
|
|
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef* htim);
|