2025-06-20 23:33:55 +08:00

126 lines
3.3 KiB
C

#ifndef __BSP_H__
#define __BSP_H__
/* BSP INCLUDE */
#include "Board.h"
/* STDC INCLUDE */
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* MCU INCLUDE */
#include <stm32f10x.h>
#include "stm32f10x_conf.h"
//SystemInit
void BspConfigInit(void);
//GPIO
#define IO_TYPE_DO 0
#define IO_TYPE_DI 1
#define IO_TYPE_AO 2
#define IO_TYPE_AI 3
#define IO_TYPE_LED 4
typedef enum {
false = 0,
true = 1,
} bool_t;
typedef struct
{
GPIO_TypeDef* GpioX;
uint16_t GpioPinX;
}GPIO_LIST;
void BspInitGpioClock(void);
void GpioConfig(GPIO_TypeDef* GpioX, uint16_t GpioPinX, GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed);
void SetGpioSts(GPIO_TypeDef* GpioX, uint16_t GpioPinX, bool_t state);
bool_t GetGpioSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX);
//Delay
void DelayConfig(void);
uint32_t GetDwtCnt(void);
void DelayUs(uint32_t Us);
void DelayMs(uint32_t Ms);
//Interrupt
#define INTERRUPT_NUM 300
typedef struct
{
void(*CallBack)(uint32_t); //回调函数
int32_t IntId; //触发中断的外设id
} INT_DESC;
typedef struct
{
INT_DESC Adc_1_2;
INT_DESC Usb_Hp_Can1_Tx;
INT_DESC Usb_Hp_Can1_Rx0;
INT_DESC Can1_Rx1;
INT_DESC Can1_Sce;
INT_DESC Exti_9_5;
INT_DESC Tim_1_Brk;
INT_DESC Tim_1_Up;
INT_DESC Tim_1_Trg_Com;
INT_DESC Tim_1_Cc;
INT_DESC Tim_2;
INT_DESC Tim_3;
INT_DESC Tim_4;
INT_DESC I2c_1_Ev;
INT_DESC I2c_1_ER;
INT_DESC I2c_2_Ev;
INT_DESC I2c_2_ER;
INT_DESC Spi_1;
INT_DESC Spi_2;
INT_DESC Usart1;
INT_DESC Usart2;
INT_DESC Usart3;
INT_DESC Exti_15_10;
INT_DESC Rtc_Alarm;
INT_DESC Usb_WackUp;
INT_DESC Tim_8_Brk;
INT_DESC Tim_8_Up;
INT_DESC Tim_8_Trg_Com;
INT_DESC Tim_8_Cc;
INT_DESC Adc_3;
INT_DESC Fsmc;
INT_DESC Sdio;
INT_DESC Tim_5;
INT_DESC Spi_3;
INT_DESC Uart4;
INT_DESC Uart5;
INT_DESC Tim_6;
INT_DESC Tim_7;
INT_DESC Dma_2_Chnl_1;
INT_DESC Dma_2_Chnl_2;
INT_DESC Dma_2_Chnl_3;
INT_DESC Dma_2_Chnl_4;
} SYSTEM_INT_REG;
void DisAllowInt(void);
void AllowInt(void);
void IntCbInit(void);
void IntCbReg(uint32_t Vector, void(*Func)(uint32_t));
void IntSetLevel(uint32_t Vector, uint8_t NvicPrePriority, uint8_t NvicSubPriority);
//USART
#define DataBit_8 USART_WordLength_8b
#define DataBit_9 USART_WordLength_9b
#define StopBit_1 USART_StopBits_1
#define StopBit_0_5 USART_StopBits_0_5
#define StopBit_2 USART_StopBits_2
#define StopBit_1_5 USART_StopBits_1_5
#define Parity_No USART_Parity_No
#define Parity_Even USART_Parity_Even
#define Parity_Odd USART_Parity_Odd
void BspInitUsartClock(void);
void UsartStdConfig(uint32_t ComId, uint32_t baud);
void UsartAdvConfig(uint32_t ComId, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity);
void UsartSendChar(uint32_t ComId,uint8_t Data);
void UsartSendStr(uint32_t ComId,uint8_t* Data, uint64_t Len);
uint8_t UsartReceiveChar(uint32_t ComId);
//用户层接口
void IoCtlToggleDo(uint16_t IoChnl);
uint32_t IoCtl(uint8_t IoType, uint16_t IoChnl,uint32_t state);
void IoCtlLedToggle(uint16_t IoChnl);
#endif