gpio写完,延时不准

This commit is contained in:
2026-05-24 22:33:20 +08:00
parent 15fd21eba6
commit 42ceefc5ad
15 changed files with 1426 additions and 560 deletions
+82 -47
View File
@@ -1,23 +1,10 @@
#ifndef __BSP_H__
#define __BSP_H__
/* 板级BSP头文件 */
#include "Board.h"
#include "VoiletTypeDef.h"
#include "Voilet.h"
/* SHELL头文件 */
#include "LetterShell.h"
/* BSP版本 */
#define VERSION_0 0
#define VERSION_1 1
#define VERSION_2 2
/* RTOS宏开关 */
#ifdef USE_RTOS
#ifdef USE_THREADX
#include "tx_api.h"
#endif
#endif
#define ARRAY_LEN(arr) (sizeof(arr) / sizeof((arr)[0]))
/* BOOL类型定义 */
typedef enum {
@@ -25,44 +12,92 @@ typedef enum {
true = 1,
} bool_t;
//System
void BspInit(void);
void BspExtraInit(void);
void SystemStart(void);
void BspSystemReboot(void);
//GPIO
//数组信号输出开关
#define DO_ON 0
#define DO_OFF 1
//数组信号输入/出开关
#define DI_ON 1
#define DI_OFF 0
#define DO_ON 1
#define DO_OFF 0
//LED灯开关
#define LED_ON 0
#define LED_OFF 1
void SystemGpioInit(void);
void GpioConfig(GPIO_TypeDef *GpioX, uint16_t GpioPinX,GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed);
void GpioSetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX, uint8_t Status);
uint8_t GpioGetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX);
void LedToggle(uint8_t Chnl);
void LedOff(uint8_t Chnl);
/* Voilet */
void VoiletBspInit(void);
/* BSP */
void AllPeriphClockDisable(void);
void LedOn(uint8_t Chnl);
void LedOff(uint8_t Chnl);
void LedSet(uint8_t Chnl,uint8_t Value);
void LedToggle(uint8_t Chnl);
//System Delay
void SystemDelayConfig(void);
uint32_t SystemGetDwtCnt(void);
void SystemDelayUs(uint32_t Us);
void SystemDelayMs(uint32_t Ms);
void DelayConfig(void);
unsigned int DwtCntGet(void);
void DelayUs(unsigned int Us);
void DelayMs(unsigned int Ms);
//Interrupt
void SystemInterruptInit(void);
void InterruptRegister(uint32_t Irqn, void(*Func)(uint32_t));
void InterruptSetLevel(uint32_t Vector, uint8_t NvicPrePriority, uint8_t NvicSubPriority);
void InterruptDisable(uint32_t Vector);
/* GPIO */
void GpioClockEnable(const GPIO_MAP_T *GpioX);
void GpioConfig(const GPIO_MAP_T *GpioX, GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed);
void GpioSet(const GPIO_MAP_T *GpioX, uint8_t Value);
unsigned char GpioGet(const GPIO_MAP_T *GpioX);
/* UART */
void UartClockEnable(const COM_MAP_T *ComX);
// void UartSendChar(uint32_t ComId,uint8_t Data);
// void UartSendStr(uint32_t ComId,uint8_t* Data, uint64_t Len);
// void UartStdConfig(COM_MAP_T ComX, uint32_t baud);
// void UartAdvConfig(const COM_MAP_T *ComX, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity);
// #define UartStdConfig(ComX, baud) UartStdConfig((COM_MAP_T)ComX, baud)
// /* 板级BSP头文件 */
// #include "Board.h"
//
// /* SHELL头文件 */
// #include "LetterShell.h"
//
// /* BSP版本 */
// #define VERSION_0 0
// #define VERSION_1 1
// #define VERSION_2 2
//
// /* RTOS宏开关 */
// #ifdef USE_RTOS
// #ifdef USE_THREADX
// #include "tx_api.h"
// #endif
// #endif
//
//
// //System
// void BspInit(void);
// void BspExtraInit(void);
// void SystemStart(void);
// void BspSystemReboot(void);
//
// void SystemGpioInit(void);
// void GpioConfig(GPIO_TypeDef *GpioX, uint16_t GpioPinX,GPIOMode_TypeDef GpioMode, GPIOSpeed_TypeDef GpioSpeed);
// void GpioSetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX, uint8_t Status);
// uint8_t GpioGetSts(GPIO_TypeDef *GpioX, uint16_t GpioPinX);
// void LedToggle(uint8_t Chnl);
// void LedOff(uint8_t Chnl);
// void LedOn(uint8_t Chnl);
//
//
// //Interrupt
// void SystemInterruptInit(void);
// void InterruptRegister(uint32_t Irqn, void(*Func)(uint32_t));
// void InterruptSetLevel(uint32_t Vector, uint8_t NvicPrePriority, uint8_t NvicSubPriority);
// void InterruptDisable(uint32_t Vector);
//
// //Usart
// void SystemUsartInit(void);
// 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 UsartStdConfig(uint32_t ComId, uint32_t baud);
// void UsartAdvConfig(uint32_t ComId, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity);
//Usart
void SystemUsartInit(void);
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 UsartStdConfig(uint32_t ComId, uint32_t baud);
void UsartAdvConfig(uint32_t ComId, uint32_t baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity);
#endif
View File
+8
View File
@@ -0,0 +1,8 @@
#ifndef __LETTER_SHELL_H__
#define __LETTER_SHELL_H__
#include "Bsp.h"
void LetterShellInit(uint32_t ComId, uint32_t baud);
#endif
+173
View File
@@ -0,0 +1,173 @@
//
// Created by anonymous on 2026/5/24.
//
#ifndef VOILETTYPEDEF_H
#define VOILETTYPEDEF_H
#include "stm32f10x.h"
#define INTERRUPT_ENABLE __set_PRIMASK(0); //开启中断
#define INTERRUPT_DISABLE __set_PRIMASK(1); //关闭中断
typedef struct {
GPIO_TypeDef *Periph;
unsigned short GpioPin;
} GPIO_MAP_T;
// ==================== GPIOA 组 ====================
#ifdef GPIOA
#define GPIO0 {GPIOA, GPIO_Pin_0}
#define GPIO1 {GPIOA, GPIO_Pin_1}
#define GPIO2 {GPIOA, GPIO_Pin_2}
#define GPIO3 {GPIOA, GPIO_Pin_3}
#define GPIO4 {GPIOA, GPIO_Pin_4}
#define GPIO5 {GPIOA, GPIO_Pin_5}
#define GPIO6 {GPIOA, GPIO_Pin_6}
#define GPIO7 {GPIOA, GPIO_Pin_7}
#define GPIO8 {GPIOA, GPIO_Pin_8}
#define GPIO9 {GPIOA, GPIO_Pin_9}
#define GPIO10 {GPIOA, GPIO_Pin_10}
#define GPIO11 {GPIOA, GPIO_Pin_11}
#define GPIO12 {GPIOA, GPIO_Pin_12}
#define GPIO13 {GPIOA, GPIO_Pin_13}
#define GPIO14 {GPIOA, GPIO_Pin_14}
#define GPIO15 {GPIOA, GPIO_Pin_15}
#endif
#ifdef GPIOB
// ==================== GPIOB 组 ====================
#define GPIO16 {GPIOB, GPIO_Pin_0}
#define GPIO17 {GPIOB, GPIO_Pin_1}
#define GPIO18 {GPIOB, GPIO_Pin_2}
#define GPIO19 {GPIOB, GPIO_Pin_3}
#define GPIO20 {GPIOB, GPIO_Pin_4}
#define GPIO21 {GPIOB, GPIO_Pin_5}
#define GPIO22 {GPIOB, GPIO_Pin_6}
#define GPIO23 {GPIOB, GPIO_Pin_7}
#define GPIO24 {GPIOB, GPIO_Pin_8}
#define GPIO25 {GPIOB, GPIO_Pin_9}
#define GPIO26 {GPIOB, GPIO_Pin_10}
#define GPIO27 {GPIOB, GPIO_Pin_11}
#define GPIO28 {GPIOB, GPIO_Pin_12}
#define GPIO29 {GPIOB, GPIO_Pin_13}
#define GPIO30 {GPIOB, GPIO_Pin_14}
#define GPIO31 {GPIOB, GPIO_Pin_15}
#endif
#ifdef GPIOC
// ==================== GPIOC 组 ====================
#define GPIO32 {GPIOC, GPIO_Pin_0}
#define GPIO33 {GPIOC, GPIO_Pin_1}
#define GPIO34 {GPIOC, GPIO_Pin_2}
#define GPIO35 {GPIOC, GPIO_Pin_3}
#define GPIO36 {GPIOC, GPIO_Pin_4}
#define GPIO37 {GPIOC, GPIO_Pin_5}
#define GPIO38 {GPIOC, GPIO_Pin_6}
#define GPIO39 {GPIOC, GPIO_Pin_7}
#define GPIO40 {GPIOC, GPIO_Pin_8}
#define GPIO41 {GPIOC, GPIO_Pin_9}
#define GPIO42 {GPIOC, GPIO_Pin_10}
#define GPIO43 {GPIOC, GPIO_Pin_11}
#define GPIO44 {GPIOC, GPIO_Pin_12}
#define GPIO45 {GPIOC, GPIO_Pin_13}
#define GPIO46 {GPIOC, GPIO_Pin_14}
#define GPIO47 {GPIOC, GPIO_Pin_15}
#endif
#ifdef GPIOD
// ==================== GPIOD 组 ====================
#define GPIO48 {GPIOD, GPIO_Pin_0}
#define GPIO49 {GPIOD, GPIO_Pin_1}
#define GPIO50 {GPIOD, GPIO_Pin_2}
#define GPIO51 {GPIOD, GPIO_Pin_3}
#define GPIO52 {GPIOD, GPIO_Pin_4}
#define GPIO53 {GPIOD, GPIO_Pin_5}
#define GPIO54 {GPIOD, GPIO_Pin_6}
#define GPIO55 {GPIOD, GPIO_Pin_7}
#define GPIO56 {GPIOD, GPIO_Pin_8}
#define GPIO57 {GPIOD, GPIO_Pin_9}
#define GPIO58 {GPIOD, GPIO_Pin_10}
#define GPIO59 {GPIOD, GPIO_Pin_11}
#define GPIO60 {GPIOD, GPIO_Pin_12}
#define GPIO61 {GPIOD, GPIO_Pin_13}
#define GPIO62 {GPIOD, GPIO_Pin_14}
#define GPIO63 {GPIOD, GPIO_Pin_15}
#endif
#ifdef GPIOE
// ==================== GPIOE 组 ====================
#define GPIO64 {GPIOE, GPIO_Pin_0}
#define GPIO65 {GPIOE, GPIO_Pin_1}
#define GPIO66 {GPIOE, GPIO_Pin_2}
#define GPIO67 {GPIOE, GPIO_Pin_3}
#define GPIO68 {GPIOE, GPIO_Pin_4}
#define GPIO69 {GPIOE, GPIO_Pin_5}
#define GPIO70 {GPIOE, GPIO_Pin_6}
#define GPIO71 {GPIOE, GPIO_Pin_7}
#define GPIO72 {GPIOE, GPIO_Pin_8}
#define GPIO73 {GPIOE, GPIO_Pin_9}
#define GPIO74 {GPIOE, GPIO_Pin_10}
#define GPIO75 {GPIOE, GPIO_Pin_11}
#define GPIO76 {GPIOE, GPIO_Pin_12}
#define GPIO77 {GPIOE, GPIO_Pin_13}
#define GPIO78 {GPIOE, GPIO_Pin_14}
#define GPIO79 {GPIOE, GPIO_Pin_15}
#endif
#ifdef GPIOF
// ==================== GPIOF 组 ====================
#define GPIO80 {GPIOF, GPIO_Pin_0}
#define GPIO81 {GPIOF, GPIO_Pin_1}
#define GPIO82 {GPIOF, GPIO_Pin_2}
#define GPIO83 {GPIOF, GPIO_Pin_3}
#define GPIO84 {GPIOF, GPIO_Pin_4}
#define GPIO85 {GPIOF, GPIO_Pin_5}
#define GPIO86 {GPIOF, GPIO_Pin_6}
#define GPIO87 {GPIOF, GPIO_Pin_7}
#define GPIO88 {GPIOF, GPIO_Pin_8}
#define GPIO89 {GPIOF, GPIO_Pin_9}
#define GPIO90 {GPIOF, GPIO_Pin_10}
#define GPIO91 {GPIOF, GPIO_Pin_11}
#define GPIO92 {GPIOF, GPIO_Pin_12}
#define GPIO93 {GPIOF, GPIO_Pin_13}
#define GPIO94 {GPIOF, GPIO_Pin_14}
#define GPIO95 {GPIOF, GPIO_Pin_15}
#endif
#ifdef GPIOG
// ==================== GPIOG 组 ====================
#define GPIO96 {GPIOG, GPIO_Pin_0}
#define GPIO97 {GPIOG, GPIO_Pin_1}
#define GPIO98 {GPIOG, GPIO_Pin_2}
#define GPIO99 {GPIOG, GPIO_Pin_3}
#define GPIO100 {GPIOG, GPIO_Pin_4}
#define GPIO101 {GPIOG, GPIO_Pin_5}
#define GPIO102 {GPIOG, GPIO_Pin_6}
#define GPIO103 {GPIOG, GPIO_Pin_7}
#define GPIO104 {GPIOG, GPIO_Pin_8}
#define GPIO105 {GPIOG, GPIO_Pin_9}
#define GPIO106 {GPIOG, GPIO_Pin_10}
#define GPIO107 {GPIOG, GPIO_Pin_11}
#define GPIO108 {GPIOG, GPIO_Pin_12}
#define GPIO109 {GPIOG, GPIO_Pin_13}
#define GPIO110 {GPIOG, GPIO_Pin_14}
#define GPIO111 {GPIOG, GPIO_Pin_15}
#endif
#define GPIOEND {(GPIO_TypeDef *)0xFFFFFFFF, 0xFFFF}
typedef struct {
USART_TypeDef *Periph;
unsigned int Irqn;
} COM_MAP_T;
#ifdef USART1
#define COM0 {USART1,USART1_IRQn}
#endif
#ifdef USART2
#define COM1 {USART2,USART2_IRQn}
#endif
#ifdef USART3
#define COM2 {USART3,USART3_IRQn}
#endif
#ifdef UART4
#define COM3 {UART4,UART4_IRQn}
#endif
#define COM4 {UART5,UART5_IRQn}
#endif //VOILETTYPEDEF_H