FilmForge: RS485 data link (USART0+DE PA8) and NTC temp (PC5 ADC0)

This commit is contained in:
2026-10-09 19:13:15 +08:00
parent 8feba5e015
commit 24ddb7046e
12 changed files with 402 additions and 197 deletions
+37 -7
View File
@@ -51,13 +51,44 @@
/* >>>>>>>>>>>>>>>>>>>>[RS485 MODE]<<<<<<<<<<<<<<<<<<<< */
#define RS485_MODE CFG_DISABLE // CFG_DISABLE: RS485 off; CFG_ENABLE: RS485 on
#define RS485_MODE CFG_ENABLE // CFG_DISABLE: RS485 off; CFG_ENABLE: RS485 on
/* GD32F4xx USART 无硬件 RS485 DE 驱动(E23x 特有),DE 引脚由 GPIO 手动控制 */
#if RS485_MODE == CFG_ENABLE
#define RS485_DE_RCU RCU_GPIOA
#define RS485_DE_PORT GPIOA
#define RS485_DE_PIN GPIO_PIN_1 // 根据实际硬件修改 DE 引脚
/* 数据口 RS485:USART0(PA9 TX / PA10 RX,AF7),DE 引脚 PA8(GPIO 手动切换收发) */
#define RS485_RCU RCU_USART0
#define RS485_PHY USART0
#define RS485_IRQ USART0_IRQn
#define RS485_GPIO_RCU RCU_GPIOA
#define RS485_GPIO_PORT GPIOA
#define RS485_TX_PIN GPIO_PIN_9
#define RS485_RX_PIN GPIO_PIN_10
#define RS485_BAUDRATE 115200U
#define RS485_DE_RCU RCU_GPIOA
#define RS485_DE_PORT GPIOA
#define RS485_DE_PIN GPIO_PIN_8
#endif
/* >>>>>>>>>>>>>>>>>>>>[NTC TEMPERATURE]<<<<<<<<<<<<<<<<<<<< */
#define NTC_MODE CFG_ENABLE // CFG_DISABLE: NTC off; CFG_ENABLE: NTC on
#if NTC_MODE == CFG_ENABLE
/* 10K NTC 测温:PC5(ADC0_IN15),硬件 10K 上拉,NTC 接 GND 侧 */
#define NTC_ADC_RCU RCU_ADC0
#define NTC_GPIO_RCU RCU_GPIOC
#define NTC_GPIO_PORT GPIOC
#define NTC_GPIO_PIN GPIO_PIN_5
#define NTC_ADC ADC0
#define NTC_ADC_CHANNEL ADC_CHANNEL_15
#define NTC_SAMPLETIME ADC_SAMPLETIME_480 /* 长采样时间(高阻 NTC 分压源) */
#define NTC_SAMPLE_COUNT 16U /* 单次测温的采样次数(均值降噪) */
#define NTC_VREF 3.3f /* ADC 参考电压 V */
#define NTC_ADC_MAX 4095.0f /* 12bit ADC 满量程 */
#define NTC_R_PULL 10000.0f /* 上拉电阻(硬件) */
#define NTC_R25 10000.0f /* NTC 标称阻值 @25C */
#define NTC_T25 298.15f /* 标称温度 K */
#define NTC_B_VALUE 3950 /* B 值:3950 或 3435,按实测确认后修改 */
#endif
/******************************************************************************/
@@ -74,10 +105,9 @@
#define UART_RX_PIN GPIO_PIN_3
#define UART_BAUDRATE 115200U
/* USART中断处理函数声明 */
void usart0_irq_handler(void);
/* USART中断处理函数声明(USART0 的处理在 rs485.c,USART1 的处理在 uart.c) */
void rs485_irq_handler(void);
void usart1_irq_handler(void);
void usart2_irq_handler(void);
/******************************************************************************/