优化中断

This commit is contained in:
2026-05-28 21:55:51 +08:00
parent 9f38c6ea75
commit 0516210c95
8 changed files with 219 additions and 311 deletions
+7 -31
View File
@@ -1,37 +1,13 @@
#ifndef __BSP_H__
#define __BSP_H__
#include "VoiletTypeDef.h"
/* Extra Library Enable */
#define USE_SHELL //系统使用Shell
#ifdef USE_SHELL
#include "LetterShell.h"
#endif
#define ARRAY_LEN(arr) (sizeof(arr) / sizeof((arr)[0]))
/* BOOL类型定义 */
typedef enum {
false = 0,
true = 1,
} bool_t;
//GPIO
//数组信号输入/出开关
#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
/* Voilet */
void VoiletBspInit(void);
/* Voilet Bsp */
#include "VoiletPort.h"
/* Board */
#include "Board.h"
/* BSP */
void BspInit(void);
void LedOn(uint8_t Chnl);
void LedOff(uint8_t Chnl);
void LedSet(uint8_t Chnl,uint8_t Value);
@@ -39,8 +15,8 @@ void LedToggle(uint8_t Chnl);
//Interrupt
void IrqInit(void);
void IrqRegister(unsigned int Irq, void(*Func)(void *Param));
void IrqConfig(uint32_t Irq, uint8_t NvicPrePriority, uint8_t NvicSubPriority);
void IrqRegister(unsigned char Irqn,void(*Func)(void *Param));
void IrqEnable(uint32_t Irq, uint8_t NvicPrePriority, uint8_t NvicSubPriority);
void IrqDisable(uint32_t Irq);
//System Delay
-8
View File
@@ -1,8 +0,0 @@
#ifndef __LETTER_SHELL_H__
#define __LETTER_SHELL_H__
#include "Bsp.h"
void LetterShellInit(const COM_MAP_T *ComX, uint32_t Baud);
#endif
@@ -2,24 +2,37 @@
// Created by anonymous on 2026/5/24.
//
#ifndef VOILETTYPEDEF_H
#define VOILETTYPEDEF_H
#ifndef _VOILET_PORT_H
#define _VOILET_PORT_H
#include "stm32f10x.h"
#define INTERRUPT_ENABLE __set_PRIMASK(0); //开启中断
#define INTERRUPT_DISABLE __set_PRIMASK(1); //关闭中断
#define ARRAY_LEN(arr) (sizeof(arr) / sizeof((arr)[0]))
/* BOOL类型定义 */
typedef enum {
false = 0,
true = 1,
} bool_t;
/* Interrupt Irq */
typedef struct {
unsigned char Irqn;
void *Periph;
void (*IrqCallback)(void *Param);
}IRQ_MAP_T;
#define IRQ_NUM 0xFF //中断数量
#define IRQ_NUM 67 //系统共有多少个中断
#define NVIC_GROUP_LEVEL NVIC_PriorityGroup_2 //中断组
/* GPIO */
typedef struct {
GPIO_TypeDef *GpioPort;
unsigned short GpioPin;
unsigned char Irqn;
} GPIO_PERIPH_T;
typedef struct {
@@ -28,6 +41,12 @@ typedef struct {
GPIO_PERIPH_T Periph;
} GPIO_MAP_T;
typedef struct {
GPIO_MAP_T GpioX;
GPIOMode_TypeDef Mode;
GPIOSpeed_TypeDef Speed;
}GPIO_CONFIG;
// ==================== GPIOA 组 ====================
#ifdef GPIOA
#define GPIO0 {RCC_APB2PeriphClockCmd, RCC_APB2Periph_GPIOA, {GPIOA, GPIO_Pin_0}}
@@ -162,9 +181,10 @@ typedef struct {
#define GPIO111 {RCC_APB2PeriphClockCmd, RCC_APB2Periph_GPIOG, {GPIOG, GPIO_Pin_15}}
#endif
/* COM */
typedef struct {
USART_TypeDef *UartId;
unsigned int Irqn;
unsigned char Irqn;
} COM_PERIPH_T;
typedef struct {
@@ -173,6 +193,13 @@ typedef struct {
COM_PERIPH_T Periph;
} COM_MAP_T;
typedef struct {
COM_MAP_T *ComX;
GPIO_MAP_T TxPort;
GPIO_MAP_T RxPort;
GPIOSpeed_TypeDef Speed;
}COM_CONFIG;
#ifdef USART1
#define COM0 (&(COM_MAP_T){RCC_APB2PeriphClockCmd, RCC_APB2Periph_USART1, {USART1,USART1_IRQn}})
#endif
@@ -187,4 +214,4 @@ typedef struct {
#endif
#define COM4 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_UART5,{UART5,UART5_IRQn}})
#endif //VOILETTYPEDEF_H
#endif //_VOILET_PORT_H