Compare commits

..

1 Commits

Author SHA1 Message Date
iorebuild 249409457f 优化架构 2026-06-03 19:53:57 +08:00
3 changed files with 31 additions and 15 deletions
+5 -8
View File
@@ -209,31 +209,28 @@ typedef struct {
void (*ClockCmd)(uint32_t RccPeriph, FunctionalState State); void (*ClockCmd)(uint32_t RccPeriph, FunctionalState State);
unsigned int ClockTree; unsigned int ClockTree;
COM_PERIPH_T Periph; COM_PERIPH_T Periph;
GPIO_MAP_T TxRxEn; //收发使能
} COM_MAP_T; } COM_MAP_T;
typedef struct { typedef struct {
COM_MAP_T *ComX; //串口外设 COM_MAP_T *ComX; //串口外设
GPIO_MAP_T TxPort; //发送端口 GPIO_MAP_T TxPort; //发送端口
GPIO_MAP_T RxPort; //接收端口 GPIO_MAP_T RxPort; //接收端口
unsigned char Rs485; //是否是Rs485
GPIO_MAP_T TxRxEn; //收发使能 GPIO_MAP_T TxRxEn; //收发使能
GPIOSpeed_TypeDef Speed; //IO口速度
}COM_CONFIG; }COM_CONFIG;
#define COM_NUM 5 #define COM_NUM 5
#ifdef USART1 #ifdef USART1
#define COM0 (&(COM_MAP_T){RCC_APB2PeriphClockCmd, RCC_APB2Periph_USART1, {USART1,USART1_IRQn},GPIO_NULL}) #define COM0 (&(COM_MAP_T){RCC_APB2PeriphClockCmd, RCC_APB2Periph_USART1, {USART1,USART1_IRQn}})
#endif #endif
#ifdef USART2 #ifdef USART2
#define COM1 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_USART2, {USART2,USART2_IRQn},GPIO_NULL}) #define COM1 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_USART2, {USART2,USART2_IRQn}})
#endif #endif
#ifdef USART3 #ifdef USART3
#define COM2 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_USART3,{USART3,USART3_IRQn},GPIO_NULL}) #define COM2 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_USART3,{USART3,USART3_IRQn}})
#endif #endif
#ifdef UART4 #ifdef UART4
#define COM3 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_UART4,{UART4,UART4_IRQn},GPIO_NULL}) #define COM3 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_UART4,{UART4,UART4_IRQn}})
#endif #endif
#define COM4 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_UART5,{UART5,UART5_IRQn},GPIO_NULL}) #define COM4 (&(COM_MAP_T){RCC_APB1PeriphClockCmd, RCC_APB1Periph_UART5,{UART5,UART5_IRQn}})
#endif //_VOILET_PORT_H #endif //_VOILET_PORT_H
+22 -7
View File
@@ -25,8 +25,8 @@ const GPIO_CONFIG DO_PERIPH[] = {
#endif #endif
//串口配置表 //串口配置表
const COM_CONFIG COM_PERIPH[] = { const COM_CONFIG COM_PERIPH[] = {
{COM0,.TxPort = GPIO9, .RxPort =GPIO10, .Speed = GPIO_Speed_50MHz,.Rs485 = false}, {COM0,.TxPort = GPIO9, .RxPort =GPIO10},
{COM1,.TxPort = GPIO2, .RxPort = GPIO3, .Speed = GPIO_Speed_50MHz,.Rs485 = true,.TxRxEn = GPIO55}, {COM1,.TxPort = GPIO2, .RxPort = GPIO3,.TxRxEn = GPIO55},
}; };
void BspExtraInit(void); void BspExtraInit(void);
@@ -78,11 +78,8 @@ void BspInit(void) {
//串口配置 //串口配置
for (i = 0;i < ARRAY_LEN(COM_PERIPH);i++) { for (i = 0;i < ARRAY_LEN(COM_PERIPH);i++) {
GpioConfig(&COM_PERIPH[i].TxPort, GPIO_Mode_AF_PP, COM_PERIPH[i].Speed); GpioConfig(&COM_PERIPH[i].TxPort, GPIO_Mode_AF_PP, GPIO_Speed_2MHz);
GpioConfig(&COM_PERIPH[i].RxPort, GPIO_Mode_IPU, COM_PERIPH[i].Speed); GpioConfig(&COM_PERIPH[i].RxPort, GPIO_Mode_IPU, GPIO_Speed_2MHz);
if (COM_PERIPH[i].Rs485 == true) {
GpioConfig(&COM_PERIPH[i].TxRxEn, GPIO_Mode_AF_PP, COM_PERIPH[i].Speed);
}
} }
INTERRUPT_ENABLE INTERRUPT_ENABLE
@@ -160,6 +157,24 @@ void LedToggle(uint8_t Chnl)
GpioSet(&LED_PERIPH[Chnl].GpioX,LED_ON); GpioSet(&LED_PERIPH[Chnl].GpioX,LED_ON);
} }
} }
void Rs485StdConfig(const COM_MAP_T *ComX,unsigned int Baud)
{
for (unsigned char i = 0;i < ARRAY_LEN(COM_PERIPH);i++) {
if (ComX == COM_PERIPH[i].ComX) {
if (COM_PERIPH[i].TxRxEn.ClockTree) {
GpioSet(&COM_PERIPH[i].TxRxEn,Baud);
}
ComStdConfig(COM_PERIPH[i].ComX,Baud);
}
}
}
void Rs485AdvConfig(const COM_MAP_T *ComX, uint32_t Baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity)
{
}
/** /**
* @brief 重写Printf函数 * @brief 重写Printf函数
* @note void * @note void
+4
View File
@@ -93,4 +93,8 @@ void ComStdConfig(const COM_MAP_T *ComX, uint32_t Baud)
void ComAdvConfig(const COM_MAP_T *ComX, uint32_t Baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity) void ComAdvConfig(const COM_MAP_T *ComX, uint32_t Baud, uint8_t DataBits, uint8_t StopBits, uint8_t Parity)
{ {
ComInit(ComX, Baud, DataBits, StopBits, Parity); ComInit(ComX, Baud, DataBits, StopBits, Parity);
}
unsigned int CalcBaudTransIoSpeed(unsigned int Baud) {
} }