Compare commits
4 Commits
b94a28aacf
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 270141591e | |||
| f56744ad7a | |||
| 385548967a | |||
| ef112855bf |
File diff suppressed because one or more lines are too long
@@ -76,56 +76,48 @@ Mcu.CPN=STM32F407VGT6
|
||||
Mcu.Family=STM32F4
|
||||
Mcu.IP0=DMA
|
||||
Mcu.IP1=NVIC
|
||||
Mcu.IP10=USART6
|
||||
Mcu.IP2=RCC
|
||||
Mcu.IP3=SYS
|
||||
Mcu.IP4=UART4
|
||||
Mcu.IP5=USART1
|
||||
Mcu.IP6=USART2
|
||||
Mcu.IPNb=7
|
||||
Mcu.IP3=SPI1
|
||||
Mcu.IP4=SPI2
|
||||
Mcu.IP5=SYS
|
||||
Mcu.IP6=UART4
|
||||
Mcu.IP7=USART1
|
||||
Mcu.IP8=USART2
|
||||
Mcu.IP9=USART3
|
||||
Mcu.IPNb=11
|
||||
Mcu.Name=STM32F407V(E-G)Tx
|
||||
Mcu.Package=LQFP100
|
||||
Mcu.Pin0=PE2
|
||||
Mcu.Pin1=PE3
|
||||
Mcu.Pin10=PE8
|
||||
Mcu.Pin11=PE9
|
||||
Mcu.Pin12=PE10
|
||||
Mcu.Pin13=PB12
|
||||
Mcu.Pin14=PB13
|
||||
Mcu.Pin15=PB14
|
||||
Mcu.Pin16=PB15
|
||||
Mcu.Pin17=PD8
|
||||
Mcu.Pin18=PD9
|
||||
Mcu.Pin19=PD10
|
||||
Mcu.Pin2=PE4
|
||||
Mcu.Pin20=PD11
|
||||
Mcu.Pin21=PD12
|
||||
Mcu.Pin22=PD13
|
||||
Mcu.Pin23=PD14
|
||||
Mcu.Pin24=PD15
|
||||
Mcu.Pin25=PC6
|
||||
Mcu.Pin26=PC7
|
||||
Mcu.Pin27=PC8
|
||||
Mcu.Pin28=PC9
|
||||
Mcu.Pin29=PA9
|
||||
Mcu.Pin3=PE5
|
||||
Mcu.Pin30=PA10
|
||||
Mcu.Pin31=PA13
|
||||
Mcu.Pin32=PA14
|
||||
Mcu.Pin33=PD4
|
||||
Mcu.Pin34=PD5
|
||||
Mcu.Pin35=PD6
|
||||
Mcu.Pin36=PB8
|
||||
Mcu.Pin37=PB9
|
||||
Mcu.Pin38=PE0
|
||||
Mcu.Pin39=PE1
|
||||
Mcu.Pin4=PE6
|
||||
Mcu.Pin40=VP_SYS_VS_Systick
|
||||
Mcu.Pin5=PH0-OSC_IN
|
||||
Mcu.Pin6=PH1-OSC_OUT
|
||||
Mcu.Pin7=PA0-WKUP
|
||||
Mcu.Pin8=PA1
|
||||
Mcu.Pin9=PA2
|
||||
Mcu.PinsNb=41
|
||||
Mcu.Pin0=PH0-OSC_IN
|
||||
Mcu.Pin1=PH1-OSC_OUT
|
||||
Mcu.Pin10=PC5
|
||||
Mcu.Pin11=PE11
|
||||
Mcu.Pin12=PB10
|
||||
Mcu.Pin13=PB11
|
||||
Mcu.Pin14=PB12
|
||||
Mcu.Pin15=PB13
|
||||
Mcu.Pin16=PB14
|
||||
Mcu.Pin17=PB15
|
||||
Mcu.Pin18=PC6
|
||||
Mcu.Pin19=PC7
|
||||
Mcu.Pin2=PA0-WKUP
|
||||
Mcu.Pin20=PA13
|
||||
Mcu.Pin21=PA14
|
||||
Mcu.Pin22=PD3
|
||||
Mcu.Pin23=PD4
|
||||
Mcu.Pin24=PD5
|
||||
Mcu.Pin25=PB6
|
||||
Mcu.Pin26=PB7
|
||||
Mcu.Pin27=PB8
|
||||
Mcu.Pin28=VP_SYS_VS_Systick
|
||||
Mcu.Pin3=PA1
|
||||
Mcu.Pin4=PA2
|
||||
Mcu.Pin5=PA3
|
||||
Mcu.Pin6=PA5
|
||||
Mcu.Pin7=PA6
|
||||
Mcu.Pin8=PA7
|
||||
Mcu.Pin9=PC4
|
||||
Mcu.PinsNb=29
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F407VGTx
|
||||
@@ -157,172 +149,84 @@ PA0-WKUP.Signal=UART4_TX
|
||||
PA1.Locked=true
|
||||
PA1.Mode=Asynchronous
|
||||
PA1.Signal=UART4_RX
|
||||
PA10.Locked=true
|
||||
PA10.Mode=Asynchronous
|
||||
PA10.Signal=USART1_RX
|
||||
PA13.Mode=Serial_Wire
|
||||
PA13.Signal=SYS_JTMS-SWDIO
|
||||
PA14.Mode=Serial_Wire
|
||||
PA14.Signal=SYS_JTCK-SWCLK
|
||||
PA2.GPIOParameters=GPIO_Speed,PinState,GPIO_Label
|
||||
PA2.GPIO_Label=RS485_EN
|
||||
PA2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PA2.Locked=true
|
||||
PA2.PinState=GPIO_PIN_SET
|
||||
PA2.Signal=GPIO_Output
|
||||
PA9.Locked=true
|
||||
PA9.Mode=Asynchronous
|
||||
PA9.Signal=USART1_TX
|
||||
PB12.GPIOParameters=PinState,GPIO_Label
|
||||
PB12.GPIO_Label=LED_CH16
|
||||
PA2.Mode=Asynchronous
|
||||
PA2.Signal=USART2_TX
|
||||
PA3.Locked=true
|
||||
PA3.Mode=Asynchronous
|
||||
PA3.Signal=USART2_RX
|
||||
PA5.Locked=true
|
||||
PA5.Mode=Full_Duplex_Master
|
||||
PA5.Signal=SPI1_SCK
|
||||
PA6.Locked=true
|
||||
PA6.Mode=Full_Duplex_Master
|
||||
PA6.Signal=SPI1_MISO
|
||||
PA7.Locked=true
|
||||
PA7.Mode=Full_Duplex_Master
|
||||
PA7.Signal=SPI1_MOSI
|
||||
PB10.Locked=true
|
||||
PB10.Mode=Asynchronous
|
||||
PB10.Signal=USART3_TX
|
||||
PB11.Locked=true
|
||||
PB11.Mode=Asynchronous
|
||||
PB11.Signal=USART3_RX
|
||||
PB12.GPIOParameters=GPIO_Label
|
||||
PB12.GPIO_Label=SPI2_CS
|
||||
PB12.Locked=true
|
||||
PB12.PinState=GPIO_PIN_SET
|
||||
PB12.Signal=GPIO_Output
|
||||
PB13.GPIOParameters=PinState,GPIO_Label
|
||||
PB13.GPIO_Label=LED_CH15
|
||||
PB13.Locked=true
|
||||
PB13.PinState=GPIO_PIN_SET
|
||||
PB13.Signal=GPIO_Output
|
||||
PB14.GPIOParameters=PinState,GPIO_Label
|
||||
PB14.GPIO_Label=LED_CH14
|
||||
PB13.Mode=Full_Duplex_Master
|
||||
PB13.Signal=SPI2_SCK
|
||||
PB14.Locked=true
|
||||
PB14.PinState=GPIO_PIN_SET
|
||||
PB14.Signal=GPIO_Output
|
||||
PB15.GPIOParameters=PinState,GPIO_Label
|
||||
PB15.GPIO_Label=LED_CH13
|
||||
PB14.Mode=Full_Duplex_Master
|
||||
PB14.Signal=SPI2_MISO
|
||||
PB15.Locked=true
|
||||
PB15.PinState=GPIO_PIN_SET
|
||||
PB15.Signal=GPIO_Output
|
||||
PB8.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PB8.GPIO_Label=RX_S3
|
||||
PB8.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PB15.Mode=Full_Duplex_Master
|
||||
PB15.Signal=SPI2_MOSI
|
||||
PB6.Locked=true
|
||||
PB6.Mode=Asynchronous
|
||||
PB6.Signal=USART1_TX
|
||||
PB7.Locked=true
|
||||
PB7.Mode=Asynchronous
|
||||
PB7.Signal=USART1_RX
|
||||
PB8.GPIOParameters=GPIO_Label
|
||||
PB8.GPIO_Label=RS485_EN
|
||||
PB8.Locked=true
|
||||
PB8.Signal=GPIO_Output
|
||||
PB9.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PB9.GPIO_Label=RX_S2
|
||||
PB9.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PB9.Locked=true
|
||||
PB9.Signal=GPIO_Output
|
||||
PC6.GPIOParameters=PinState,GPIO_Label
|
||||
PC6.GPIO_Label=LED_CH4
|
||||
PC4.GPIOParameters=GPIO_Label
|
||||
PC4.GPIO_Label=W5500_RST
|
||||
PC4.Locked=true
|
||||
PC4.Signal=GPIO_Output
|
||||
PC5.GPIOParameters=GPIO_Label
|
||||
PC5.GPIO_Label=W5500_INT
|
||||
PC5.Locked=true
|
||||
PC5.Signal=GPIO_Output
|
||||
PC6.Locked=true
|
||||
PC6.PinState=GPIO_PIN_SET
|
||||
PC6.Signal=GPIO_Output
|
||||
PC7.GPIOParameters=PinState,GPIO_Label
|
||||
PC7.GPIO_Label=LED_CH3
|
||||
PC6.Mode=Asynchronous
|
||||
PC6.Signal=USART6_TX
|
||||
PC7.Locked=true
|
||||
PC7.PinState=GPIO_PIN_SET
|
||||
PC7.Signal=GPIO_Output
|
||||
PC8.GPIOParameters=PinState,GPIO_Label
|
||||
PC8.GPIO_Label=LED_CH2
|
||||
PC8.Locked=true
|
||||
PC8.PinState=GPIO_PIN_SET
|
||||
PC8.Signal=GPIO_Output
|
||||
PC9.GPIOParameters=PinState,GPIO_Label
|
||||
PC9.GPIO_Label=LED_CH1
|
||||
PC9.Locked=true
|
||||
PC9.PinState=GPIO_PIN_SET
|
||||
PC9.Signal=GPIO_Output
|
||||
PD10.GPIOParameters=PinState,GPIO_Label
|
||||
PD10.GPIO_Label=LED_CH10
|
||||
PD10.Locked=true
|
||||
PD10.PinState=GPIO_PIN_SET
|
||||
PD10.Signal=GPIO_Output
|
||||
PD11.GPIOParameters=PinState,GPIO_Label
|
||||
PD11.GPIO_Label=LED_CH9
|
||||
PD11.Locked=true
|
||||
PD11.PinState=GPIO_PIN_SET
|
||||
PD11.Signal=GPIO_Output
|
||||
PD12.GPIOParameters=PinState,GPIO_Label
|
||||
PD12.GPIO_Label=LED_CH8
|
||||
PD12.Locked=true
|
||||
PD12.PinState=GPIO_PIN_SET
|
||||
PD12.Signal=GPIO_Output
|
||||
PD13.GPIOParameters=PinState,GPIO_Label
|
||||
PD13.GPIO_Label=LED_CH7
|
||||
PD13.Locked=true
|
||||
PD13.PinState=GPIO_PIN_SET
|
||||
PD13.Signal=GPIO_Output
|
||||
PD14.GPIOParameters=PinState,GPIO_Label
|
||||
PD14.GPIO_Label=LED_CH6
|
||||
PD14.Locked=true
|
||||
PD14.PinState=GPIO_PIN_SET
|
||||
PD14.Signal=GPIO_Output
|
||||
PD15.GPIOParameters=PinState,GPIO_Label
|
||||
PD15.GPIO_Label=LED_CH5
|
||||
PD15.Locked=true
|
||||
PD15.PinState=GPIO_PIN_SET
|
||||
PD15.Signal=GPIO_Output
|
||||
PD4.GPIOParameters=PinState,GPIO_Label
|
||||
PD4.GPIO_Label=RX_EN
|
||||
PC7.Mode=Asynchronous
|
||||
PC7.Signal=USART6_RX
|
||||
PD3.GPIOParameters=GPIO_Label
|
||||
PD3.GPIO_Label=DS1302_CLK
|
||||
PD3.Locked=true
|
||||
PD3.Signal=GPIO_Output
|
||||
PD4.GPIOParameters=GPIO_Label
|
||||
PD4.GPIO_Label=DS1302_DIO
|
||||
PD4.Locked=true
|
||||
PD4.PinState=GPIO_PIN_RESET
|
||||
PD4.Signal=GPIO_Output
|
||||
PD5.GPIOParameters=GPIO_Label
|
||||
PD5.GPIO_Label=DS1302_RST
|
||||
PD5.Locked=true
|
||||
PD5.Mode=Asynchronous
|
||||
PD5.Signal=USART2_TX
|
||||
PD6.Locked=true
|
||||
PD6.Mode=Asynchronous
|
||||
PD6.Signal=USART2_RX
|
||||
PD8.GPIOParameters=PinState,GPIO_Label
|
||||
PD8.GPIO_Label=LED_CH12
|
||||
PD8.Locked=true
|
||||
PD8.PinState=GPIO_PIN_SET
|
||||
PD8.Signal=GPIO_Output
|
||||
PD9.GPIOParameters=PinState,GPIO_Label
|
||||
PD9.GPIO_Label=LED_CH11
|
||||
PD9.Locked=true
|
||||
PD9.PinState=GPIO_PIN_SET
|
||||
PD9.Signal=GPIO_Output
|
||||
PE0.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE0.GPIO_Label=RX_S1
|
||||
PE0.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE0.Locked=true
|
||||
PE0.Signal=GPIO_Output
|
||||
PE1.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE1.GPIO_Label=RX_S0
|
||||
PE1.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE1.Locked=true
|
||||
PE1.Signal=GPIO_Output
|
||||
PE10.GPIOParameters=PinState,GPIO_Label
|
||||
PE10.GPIO_Label=LED3
|
||||
PE10.Locked=true
|
||||
PE10.PinState=GPIO_PIN_SET
|
||||
PE10.Signal=GPIO_Output
|
||||
PE2.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE2.GPIO_Label=TX_S3
|
||||
PE2.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE2.Locked=true
|
||||
PE2.Signal=GPIO_Output
|
||||
PE3.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE3.GPIO_Label=TX_S2
|
||||
PE3.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE3.Locked=true
|
||||
PE3.Signal=GPIO_Output
|
||||
PE4.GPIOParameters=GPIO_Label
|
||||
PE4.GPIO_Label=TX_EN
|
||||
PE4.Locked=true
|
||||
PE4.Signal=GPIO_Output
|
||||
PE5.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE5.GPIO_Label=TX_S1
|
||||
PE5.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE5.Locked=true
|
||||
PE5.Signal=GPIO_Output
|
||||
PE6.GPIOParameters=GPIO_Speed,GPIO_Label
|
||||
PE6.GPIO_Label=TX_S0
|
||||
PE6.GPIO_Speed=GPIO_SPEED_FREQ_VERY_HIGH
|
||||
PE6.Locked=true
|
||||
PE6.Signal=GPIO_Output
|
||||
PE8.GPIOParameters=PinState,GPIO_Label
|
||||
PE8.GPIO_Label=LED1
|
||||
PE8.Locked=true
|
||||
PE8.PinState=GPIO_PIN_SET
|
||||
PE8.Signal=GPIO_Output
|
||||
PE9.GPIOParameters=PinState,GPIO_Label
|
||||
PE9.GPIO_Label=LED2
|
||||
PE9.Locked=true
|
||||
PE9.PinState=GPIO_PIN_SET
|
||||
PE9.Signal=GPIO_Output
|
||||
PD5.Signal=GPIO_Output
|
||||
PE11.GPIOParameters=GPIO_Label
|
||||
PE11.GPIO_Label=W5500_SPI1_CS
|
||||
PE11.Locked=true
|
||||
PE11.Signal=GPIO_Output
|
||||
PH0-OSC_IN.Mode=HSE-External-Oscillator
|
||||
PH0-OSC_IN.Signal=RCC_OSC_IN
|
||||
PH1-OSC_OUT.Mode=HSE-External-Oscillator
|
||||
@@ -358,7 +262,7 @@ ProjectManager.ToolChainLocation=
|
||||
ProjectManager.UAScriptAfterPath=
|
||||
ProjectManager.UAScriptBeforePath=
|
||||
ProjectManager.UnderRoot=false
|
||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_UART4_Init-UART4-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true
|
||||
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_UART4_Init-UART4-false-HAL-true,5-MX_USART1_UART_Init-USART1-false-HAL-true,6-MX_USART2_UART_Init-USART2-false-HAL-true,7-MX_SPI1_Init-SPI1-false-HAL-true,8-MX_SPI2_Init-SPI2-false-HAL-true,9-MX_USART3_UART_Init-USART3-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true
|
||||
RCC.48MHZClocksFreq_Value=84000000
|
||||
RCC.AHBFreq_Value=168000000
|
||||
RCC.APB1CLKDivider=RCC_HCLK_DIV4
|
||||
@@ -392,6 +296,16 @@ RCC.VCOI2SOutputFreq_Value=384000000
|
||||
RCC.VCOInputFreq_Value=2000000
|
||||
RCC.VCOOutputFreq_Value=336000000
|
||||
RCC.VcooutputI2S=192000000
|
||||
SPI1.CalculateBaudRate=42.0 MBits/s
|
||||
SPI1.Direction=SPI_DIRECTION_2LINES
|
||||
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
|
||||
SPI1.Mode=SPI_MODE_MASTER
|
||||
SPI1.VirtualType=VM_MASTER
|
||||
SPI2.CalculateBaudRate=21.0 MBits/s
|
||||
SPI2.Direction=SPI_DIRECTION_2LINES
|
||||
SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate
|
||||
SPI2.Mode=SPI_MODE_MASTER
|
||||
SPI2.VirtualType=VM_MASTER
|
||||
UART4.IPParameters=VirtualMode,OverSampling
|
||||
UART4.OverSampling=UART_OVERSAMPLING_16
|
||||
UART4.VirtualMode=Asynchronous
|
||||
@@ -401,6 +315,10 @@ USART1.VirtualMode=VM_ASYNC
|
||||
USART2.IPParameters=VirtualMode,OverSampling
|
||||
USART2.OverSampling=UART_OVERSAMPLING_16
|
||||
USART2.VirtualMode=VM_ASYNC
|
||||
USART3.IPParameters=VirtualMode
|
||||
USART3.VirtualMode=VM_ASYNC
|
||||
USART6.IPParameters=VirtualMode
|
||||
USART6.VirtualMode=VM_ASYNC
|
||||
VP_SYS_VS_Systick.Mode=SysTick
|
||||
VP_SYS_VS_Systick.Signal=SYS_VS_Systick
|
||||
board=custom
|
||||
|
||||
@@ -57,66 +57,22 @@ void Error_Handler(void);
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define TX_S3_Pin GPIO_PIN_2
|
||||
#define TX_S3_GPIO_Port GPIOE
|
||||
#define TX_S2_Pin GPIO_PIN_3
|
||||
#define TX_S2_GPIO_Port GPIOE
|
||||
#define TX_EN_Pin GPIO_PIN_4
|
||||
#define TX_EN_GPIO_Port GPIOE
|
||||
#define TX_S1_Pin GPIO_PIN_5
|
||||
#define TX_S1_GPIO_Port GPIOE
|
||||
#define TX_S0_Pin GPIO_PIN_6
|
||||
#define TX_S0_GPIO_Port GPIOE
|
||||
#define RS485_EN_Pin GPIO_PIN_2
|
||||
#define RS485_EN_GPIO_Port GPIOA
|
||||
#define LED1_Pin GPIO_PIN_8
|
||||
#define LED1_GPIO_Port GPIOE
|
||||
#define LED2_Pin GPIO_PIN_9
|
||||
#define LED2_GPIO_Port GPIOE
|
||||
#define LED3_Pin GPIO_PIN_10
|
||||
#define LED3_GPIO_Port GPIOE
|
||||
#define LED_CH16_Pin GPIO_PIN_12
|
||||
#define LED_CH16_GPIO_Port GPIOB
|
||||
#define LED_CH15_Pin GPIO_PIN_13
|
||||
#define LED_CH15_GPIO_Port GPIOB
|
||||
#define LED_CH14_Pin GPIO_PIN_14
|
||||
#define LED_CH14_GPIO_Port GPIOB
|
||||
#define LED_CH13_Pin GPIO_PIN_15
|
||||
#define LED_CH13_GPIO_Port GPIOB
|
||||
#define LED_CH12_Pin GPIO_PIN_8
|
||||
#define LED_CH12_GPIO_Port GPIOD
|
||||
#define LED_CH11_Pin GPIO_PIN_9
|
||||
#define LED_CH11_GPIO_Port GPIOD
|
||||
#define LED_CH10_Pin GPIO_PIN_10
|
||||
#define LED_CH10_GPIO_Port GPIOD
|
||||
#define LED_CH9_Pin GPIO_PIN_11
|
||||
#define LED_CH9_GPIO_Port GPIOD
|
||||
#define LED_CH8_Pin GPIO_PIN_12
|
||||
#define LED_CH8_GPIO_Port GPIOD
|
||||
#define LED_CH7_Pin GPIO_PIN_13
|
||||
#define LED_CH7_GPIO_Port GPIOD
|
||||
#define LED_CH6_Pin GPIO_PIN_14
|
||||
#define LED_CH6_GPIO_Port GPIOD
|
||||
#define LED_CH5_Pin GPIO_PIN_15
|
||||
#define LED_CH5_GPIO_Port GPIOD
|
||||
#define LED_CH4_Pin GPIO_PIN_6
|
||||
#define LED_CH4_GPIO_Port GPIOC
|
||||
#define LED_CH3_Pin GPIO_PIN_7
|
||||
#define LED_CH3_GPIO_Port GPIOC
|
||||
#define LED_CH2_Pin GPIO_PIN_8
|
||||
#define LED_CH2_GPIO_Port GPIOC
|
||||
#define LED_CH1_Pin GPIO_PIN_9
|
||||
#define LED_CH1_GPIO_Port GPIOC
|
||||
#define RX_EN_Pin GPIO_PIN_4
|
||||
#define RX_EN_GPIO_Port GPIOD
|
||||
#define RX_S3_Pin GPIO_PIN_8
|
||||
#define RX_S3_GPIO_Port GPIOB
|
||||
#define RX_S2_Pin GPIO_PIN_9
|
||||
#define RX_S2_GPIO_Port GPIOB
|
||||
#define RX_S1_Pin GPIO_PIN_0
|
||||
#define RX_S1_GPIO_Port GPIOE
|
||||
#define RX_S0_Pin GPIO_PIN_1
|
||||
#define RX_S0_GPIO_Port GPIOE
|
||||
#define W5500_RST_Pin GPIO_PIN_4
|
||||
#define W5500_RST_GPIO_Port GPIOC
|
||||
#define W5500_INT_Pin GPIO_PIN_5
|
||||
#define W5500_INT_GPIO_Port GPIOC
|
||||
#define W5500_SPI1_CS_Pin GPIO_PIN_11
|
||||
#define W5500_SPI1_CS_GPIO_Port GPIOE
|
||||
#define SPI2_CS_Pin GPIO_PIN_12
|
||||
#define SPI2_CS_GPIO_Port GPIOB
|
||||
#define DS1302_CLK_Pin GPIO_PIN_3
|
||||
#define DS1302_CLK_GPIO_Port GPIOD
|
||||
#define DS1302_DIO_Pin GPIO_PIN_4
|
||||
#define DS1302_DIO_GPIO_Port GPIOD
|
||||
#define DS1302_RST_Pin GPIO_PIN_5
|
||||
#define DS1302_RST_GPIO_Port GPIOD
|
||||
#define RS485_EN_Pin GPIO_PIN_8
|
||||
#define RS485_EN_GPIO_Port GPIOB
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
|
||||
55
calib_board/Core/Inc/spi.h
Normal file
55
calib_board/Core/Inc/spi.h
Normal file
@@ -0,0 +1,55 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file spi.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the spi.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2026 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __SPI_H__
|
||||
#define __SPI_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern SPI_HandleTypeDef hspi1;
|
||||
|
||||
extern SPI_HandleTypeDef hspi2;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_SPI1_Init(void);
|
||||
void MX_SPI2_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __SPI_H__ */
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
/* #define HAL_SAI_MODULE_ENABLED */
|
||||
/* #define HAL_SD_MODULE_ENABLED */
|
||||
/* #define HAL_MMC_MODULE_ENABLED */
|
||||
/* #define HAL_SPI_MODULE_ENABLED */
|
||||
#define HAL_SPI_MODULE_ENABLED
|
||||
/* #define HAL_TIM_MODULE_ENABLED */
|
||||
#define HAL_UART_MODULE_ENABLED
|
||||
/* #define HAL_USART_MODULE_ENABLED */
|
||||
|
||||
@@ -38,6 +38,10 @@ extern UART_HandleTypeDef huart1;
|
||||
|
||||
extern UART_HandleTypeDef huart2;
|
||||
|
||||
extern UART_HandleTypeDef huart3;
|
||||
|
||||
extern UART_HandleTypeDef huart6;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
@@ -45,6 +49,8 @@ extern UART_HandleTypeDef huart2;
|
||||
void MX_UART4_Init(void);
|
||||
void MX_USART1_UART_Init(void);
|
||||
void MX_USART2_UART_Init(void);
|
||||
void MX_USART3_UART_Init(void);
|
||||
void MX_USART6_UART_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
|
||||
@@ -45,94 +45,53 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
|
||||
/* GPIO Ports Clock Enable */
|
||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOH_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOE_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOE, TX_S3_Pin|TX_S2_Pin|TX_EN_Pin|TX_S1_Pin
|
||||
|TX_S0_Pin|RX_S1_Pin|RX_S0_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(GPIOC, W5500_RST_Pin|W5500_INT_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(W5500_SPI1_CS_GPIO_Port, W5500_SPI1_CS_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOE, LED1_Pin|LED2_Pin|LED3_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(GPIOB, SPI2_CS_Pin|RS485_EN_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOB, LED_CH16_Pin|LED_CH15_Pin|LED_CH14_Pin|LED_CH13_Pin, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(GPIOD, DS1302_CLK_Pin|DS1302_DIO_Pin|DS1302_RST_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOD, LED_CH12_Pin|LED_CH11_Pin|LED_CH10_Pin|LED_CH9_Pin
|
||||
|LED_CH8_Pin|LED_CH7_Pin|LED_CH6_Pin|LED_CH5_Pin, GPIO_PIN_SET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOC, LED_CH4_Pin|LED_CH3_Pin|LED_CH2_Pin|LED_CH1_Pin, GPIO_PIN_SET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(RX_EN_GPIO_Port, RX_EN_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOB, RX_S3_Pin|RX_S2_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pins : PEPin PEPin PEPin PEPin
|
||||
PEPin PEPin */
|
||||
GPIO_InitStruct.Pin = TX_S3_Pin|TX_S2_Pin|TX_S1_Pin|TX_S0_Pin
|
||||
|RX_S1_Pin|RX_S0_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PEPin PEPin PEPin PEPin */
|
||||
GPIO_InitStruct.Pin = TX_EN_Pin|LED1_Pin|LED2_Pin|LED3_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pin : PtPin */
|
||||
GPIO_InitStruct.Pin = RS485_EN_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
HAL_GPIO_Init(RS485_EN_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PBPin PBPin PBPin PBPin */
|
||||
GPIO_InitStruct.Pin = LED_CH16_Pin|LED_CH15_Pin|LED_CH14_Pin|LED_CH13_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PDPin PDPin PDPin PDPin
|
||||
PDPin PDPin PDPin PDPin
|
||||
PDPin */
|
||||
GPIO_InitStruct.Pin = LED_CH12_Pin|LED_CH11_Pin|LED_CH10_Pin|LED_CH9_Pin
|
||||
|LED_CH8_Pin|LED_CH7_Pin|LED_CH6_Pin|LED_CH5_Pin
|
||||
|RX_EN_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PCPin PCPin PCPin PCPin */
|
||||
GPIO_InitStruct.Pin = LED_CH4_Pin|LED_CH3_Pin|LED_CH2_Pin|LED_CH1_Pin;
|
||||
/*Configure GPIO pins : PCPin PCPin */
|
||||
GPIO_InitStruct.Pin = W5500_RST_Pin|W5500_INT_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PBPin PBPin */
|
||||
GPIO_InitStruct.Pin = RX_S3_Pin|RX_S2_Pin;
|
||||
/*Configure GPIO pin : PtPin */
|
||||
GPIO_InitStruct.Pin = W5500_SPI1_CS_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(W5500_SPI1_CS_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PBPin PBPin */
|
||||
GPIO_InitStruct.Pin = SPI2_CS_Pin|RS485_EN_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PDPin PDPin PDPin */
|
||||
GPIO_InitStruct.Pin = DS1302_CLK_Pin|DS1302_DIO_Pin|DS1302_RST_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
#include "dma.h"
|
||||
#include "spi.h"
|
||||
#include "usart.h"
|
||||
#include "gpio.h"
|
||||
|
||||
@@ -91,8 +92,12 @@ int main(void)
|
||||
MX_UART4_Init();
|
||||
MX_USART1_UART_Init();
|
||||
MX_USART2_UART_Init();
|
||||
MX_SPI1_Init();
|
||||
MX_SPI2_Init();
|
||||
MX_USART3_UART_Init();
|
||||
MX_USART6_UART_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
App_Init();
|
||||
app_init();
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
@@ -102,7 +107,7 @@ int main(void)
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
App_Task();
|
||||
app_task();
|
||||
}
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
|
||||
196
calib_board/Core/Src/spi.c
Normal file
196
calib_board/Core/Src/spi.c
Normal file
@@ -0,0 +1,196 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file spi.c
|
||||
* @brief This file provides code for the configuration
|
||||
* of the SPI instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2026 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "spi.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
SPI_HandleTypeDef hspi1;
|
||||
SPI_HandleTypeDef hspi2;
|
||||
|
||||
/* SPI1 init function */
|
||||
void MX_SPI1_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN SPI1_Init 0 */
|
||||
|
||||
/* USER CODE END SPI1_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN SPI1_Init 1 */
|
||||
|
||||
/* USER CODE END SPI1_Init 1 */
|
||||
hspi1.Instance = SPI1;
|
||||
hspi1.Init.Mode = SPI_MODE_MASTER;
|
||||
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
|
||||
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
|
||||
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
|
||||
hspi1.Init.NSS = SPI_NSS_SOFT;
|
||||
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
||||
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||
hspi1.Init.CRCPolynomial = 10;
|
||||
if (HAL_SPI_Init(&hspi1) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN SPI1_Init 2 */
|
||||
|
||||
/* USER CODE END SPI1_Init 2 */
|
||||
|
||||
}
|
||||
/* SPI2 init function */
|
||||
void MX_SPI2_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN SPI2_Init 0 */
|
||||
|
||||
/* USER CODE END SPI2_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN SPI2_Init 1 */
|
||||
|
||||
/* USER CODE END SPI2_Init 1 */
|
||||
hspi2.Instance = SPI2;
|
||||
hspi2.Init.Mode = SPI_MODE_MASTER;
|
||||
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
|
||||
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||
hspi2.Init.CLKPolarity = SPI_POLARITY_LOW;
|
||||
hspi2.Init.CLKPhase = SPI_PHASE_1EDGE;
|
||||
hspi2.Init.NSS = SPI_NSS_SOFT;
|
||||
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_2;
|
||||
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
|
||||
hspi2.Init.CRCPolynomial = 10;
|
||||
if (HAL_SPI_Init(&hspi2) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN SPI2_Init 2 */
|
||||
|
||||
/* USER CODE END SPI2_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
|
||||
{
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStruct = {0};
|
||||
if(spiHandle->Instance==SPI1)
|
||||
{
|
||||
/* USER CODE BEGIN SPI1_MspInit 0 */
|
||||
|
||||
/* USER CODE END SPI1_MspInit 0 */
|
||||
/* SPI1 clock enable */
|
||||
__HAL_RCC_SPI1_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
/**SPI1 GPIO Configuration
|
||||
PA5 ------> SPI1_SCK
|
||||
PA6 ------> SPI1_MISO
|
||||
PA7 ------> SPI1_MOSI
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF5_SPI1;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN SPI1_MspInit 1 */
|
||||
|
||||
/* USER CODE END SPI1_MspInit 1 */
|
||||
}
|
||||
else if(spiHandle->Instance==SPI2)
|
||||
{
|
||||
/* USER CODE BEGIN SPI2_MspInit 0 */
|
||||
|
||||
/* USER CODE END SPI2_MspInit 0 */
|
||||
/* SPI2 clock enable */
|
||||
__HAL_RCC_SPI2_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
/**SPI2 GPIO Configuration
|
||||
PB13 ------> SPI2_SCK
|
||||
PB14 ------> SPI2_MISO
|
||||
PB15 ------> SPI2_MOSI
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF5_SPI2;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN SPI2_MspInit 1 */
|
||||
|
||||
/* USER CODE END SPI2_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_SPI_MspDeInit(SPI_HandleTypeDef* spiHandle)
|
||||
{
|
||||
|
||||
if(spiHandle->Instance==SPI1)
|
||||
{
|
||||
/* USER CODE BEGIN SPI1_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END SPI1_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_SPI1_CLK_DISABLE();
|
||||
|
||||
/**SPI1 GPIO Configuration
|
||||
PA5 ------> SPI1_SCK
|
||||
PA6 ------> SPI1_MISO
|
||||
PA7 ------> SPI1_MOSI
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7);
|
||||
|
||||
/* USER CODE BEGIN SPI1_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END SPI1_MspDeInit 1 */
|
||||
}
|
||||
else if(spiHandle->Instance==SPI2)
|
||||
{
|
||||
/* USER CODE BEGIN SPI2_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END SPI2_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_SPI2_CLK_DISABLE();
|
||||
|
||||
/**SPI2 GPIO Configuration
|
||||
PB13 ------> SPI2_SCK
|
||||
PB14 ------> SPI2_MISO
|
||||
PB15 ------> SPI2_MOSI
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15);
|
||||
|
||||
/* USER CODE BEGIN SPI2_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END SPI2_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
@@ -23,7 +23,7 @@
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
#include "os_timer.h"
|
||||
#include "app_timer.h"
|
||||
#include "bsp_Uart.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
@@ -194,10 +194,10 @@ void PendSV_Handler(void)
|
||||
void SysTick_Handler(void)
|
||||
{
|
||||
/* USER CODE BEGIN SysTick_IRQn 0 */
|
||||
OsTimer_Increment(1);
|
||||
COM_Uart1.Rx_TimeIncrementInt(&COM_Uart1,1);
|
||||
COM_Uart2.Rx_TimeIncrementInt(&COM_Uart2,1);
|
||||
COM_Uart4.Rx_TimeIncrementInt(&COM_Uart4,1);
|
||||
app_timer.increment_int(1);
|
||||
com_uart1.rx_time_increment_int(&com_uart1,1);
|
||||
com_uart2.rx_time_increment_int(&com_uart2,1);
|
||||
com_uart4.rx_time_increment_int(&com_uart4,1);
|
||||
/* USER CODE END SysTick_IRQn 0 */
|
||||
HAL_IncTick();
|
||||
/* USER CODE BEGIN SysTick_IRQn 1 */
|
||||
@@ -277,9 +277,9 @@ void USART1_IRQHandler(void)
|
||||
// if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE))
|
||||
// {
|
||||
// __HAL_UART_CLEAR_IDLEFLAG(&huart1);
|
||||
// COM_Uart1.Rx_IdleInt(&COM_Uart1);
|
||||
// com_uart1.Rx_IdleInt(&com_uart1);
|
||||
// }
|
||||
// /* USER CODE END USART1_IRQn 0 */
|
||||
/* USER CODE END USART1_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart1);
|
||||
/* USER CODE BEGIN USART1_IRQn 1 */
|
||||
|
||||
@@ -295,7 +295,7 @@ void USART2_IRQHandler(void)
|
||||
// if (__HAL_UART_GET_FLAG(&huart2, UART_FLAG_IDLE))
|
||||
// {
|
||||
// __HAL_UART_CLEAR_IDLEFLAG(&huart2);
|
||||
// COM_Uart2.Rx_IdleInt(&COM_Uart2);
|
||||
// com_uart2.Rx_IdleInt(&com_uart2);
|
||||
// }
|
||||
/* USER CODE END USART2_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart2);
|
||||
@@ -313,7 +313,7 @@ void UART4_IRQHandler(void)
|
||||
// if (__HAL_UART_GET_FLAG(&huart4, UART_FLAG_IDLE))
|
||||
// {
|
||||
// __HAL_UART_CLEAR_IDLEFLAG(&huart4);
|
||||
// COM_Uart4.Rx_IdleInt(&COM_Uart4);
|
||||
// com_uart4.Rx_IdleInt(&com_uart4);
|
||||
// }
|
||||
/* USER CODE END UART4_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart4);
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
UART_HandleTypeDef huart4;
|
||||
UART_HandleTypeDef huart1;
|
||||
UART_HandleTypeDef huart2;
|
||||
UART_HandleTypeDef huart3;
|
||||
UART_HandleTypeDef huart6;
|
||||
DMA_HandleTypeDef hdma_uart4_rx;
|
||||
DMA_HandleTypeDef hdma_uart4_tx;
|
||||
DMA_HandleTypeDef hdma_usart1_rx;
|
||||
@@ -104,7 +106,7 @@ void MX_USART2_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART2_Init 1 */
|
||||
huart2.Instance = USART2;
|
||||
huart2.Init.BaudRate = 9600;
|
||||
huart2.Init.BaudRate = 115200;
|
||||
huart2.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart2.Init.StopBits = UART_STOPBITS_1;
|
||||
huart2.Init.Parity = UART_PARITY_NONE;
|
||||
@@ -119,6 +121,64 @@ void MX_USART2_UART_Init(void)
|
||||
|
||||
/* USER CODE END USART2_Init 2 */
|
||||
|
||||
}
|
||||
/* USART3 init function */
|
||||
|
||||
void MX_USART3_UART_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN USART3_Init 0 */
|
||||
|
||||
/* USER CODE END USART3_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN USART3_Init 1 */
|
||||
|
||||
/* USER CODE END USART3_Init 1 */
|
||||
huart3.Instance = USART3;
|
||||
huart3.Init.BaudRate = 115200;
|
||||
huart3.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart3.Init.StopBits = UART_STOPBITS_1;
|
||||
huart3.Init.Parity = UART_PARITY_NONE;
|
||||
huart3.Init.Mode = UART_MODE_TX_RX;
|
||||
huart3.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||
huart3.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||
if (HAL_UART_Init(&huart3) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN USART3_Init 2 */
|
||||
|
||||
/* USER CODE END USART3_Init 2 */
|
||||
|
||||
}
|
||||
/* USART6 init function */
|
||||
|
||||
void MX_USART6_UART_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN USART6_Init 0 */
|
||||
|
||||
/* USER CODE END USART6_Init 0 */
|
||||
|
||||
/* USER CODE BEGIN USART6_Init 1 */
|
||||
|
||||
/* USER CODE END USART6_Init 1 */
|
||||
huart6.Instance = USART6;
|
||||
huart6.Init.BaudRate = 115200;
|
||||
huart6.Init.WordLength = UART_WORDLENGTH_8B;
|
||||
huart6.Init.StopBits = UART_STOPBITS_1;
|
||||
huart6.Init.Parity = UART_PARITY_NONE;
|
||||
huart6.Init.Mode = UART_MODE_TX_RX;
|
||||
huart6.Init.HwFlowCtl = UART_HWCONTROL_NONE;
|
||||
huart6.Init.OverSampling = UART_OVERSAMPLING_16;
|
||||
if (HAL_UART_Init(&huart6) != HAL_OK)
|
||||
{
|
||||
Error_Handler();
|
||||
}
|
||||
/* USER CODE BEGIN USART6_Init 2 */
|
||||
|
||||
/* USER CODE END USART6_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
@@ -197,17 +257,17 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
/* USART1 clock enable */
|
||||
__HAL_RCC_USART1_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
/**USART1 GPIO Configuration
|
||||
PA9 ------> USART1_TX
|
||||
PA10 ------> USART1_RX
|
||||
PB6 ------> USART1_TX
|
||||
PB7 ------> USART1_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* USART1 DMA Init */
|
||||
/* USART1_RX Init */
|
||||
@@ -261,17 +321,17 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
/* USART2 clock enable */
|
||||
__HAL_RCC_USART2_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOD_CLK_ENABLE();
|
||||
__HAL_RCC_GPIOA_CLK_ENABLE();
|
||||
/**USART2 GPIO Configuration
|
||||
PD5 ------> USART2_TX
|
||||
PD6 ------> USART2_RX
|
||||
PA2 ------> USART2_TX
|
||||
PA3 ------> USART2_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6;
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF7_USART2;
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
|
||||
|
||||
/* USART2 DMA Init */
|
||||
/* USART2_RX Init */
|
||||
@@ -317,6 +377,54 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle)
|
||||
|
||||
/* USER CODE END USART2_MspInit 1 */
|
||||
}
|
||||
else if(uartHandle->Instance==USART3)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_MspInit 0 */
|
||||
|
||||
/* USER CODE END USART3_MspInit 0 */
|
||||
/* USART3 clock enable */
|
||||
__HAL_RCC_USART3_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOB_CLK_ENABLE();
|
||||
/**USART3 GPIO Configuration
|
||||
PB10 ------> USART3_TX
|
||||
PB11 ------> USART3_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN USART3_MspInit 1 */
|
||||
|
||||
/* USER CODE END USART3_MspInit 1 */
|
||||
}
|
||||
else if(uartHandle->Instance==USART6)
|
||||
{
|
||||
/* USER CODE BEGIN USART6_MspInit 0 */
|
||||
|
||||
/* USER CODE END USART6_MspInit 0 */
|
||||
/* USART6 clock enable */
|
||||
__HAL_RCC_USART6_CLK_ENABLE();
|
||||
|
||||
__HAL_RCC_GPIOC_CLK_ENABLE();
|
||||
/**USART6 GPIO Configuration
|
||||
PC6 ------> USART6_TX
|
||||
PC7 ------> USART6_RX
|
||||
*/
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_6|GPIO_PIN_7;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
|
||||
GPIO_InitStruct.Alternate = GPIO_AF8_USART6;
|
||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||
|
||||
/* USER CODE BEGIN USART6_MspInit 1 */
|
||||
|
||||
/* USER CODE END USART6_MspInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||
@@ -355,10 +463,10 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||
__HAL_RCC_USART1_CLK_DISABLE();
|
||||
|
||||
/**USART1 GPIO Configuration
|
||||
PA9 ------> USART1_TX
|
||||
PA10 ------> USART1_RX
|
||||
PB6 ------> USART1_TX
|
||||
PB7 ------> USART1_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_9|GPIO_PIN_10);
|
||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_6|GPIO_PIN_7);
|
||||
|
||||
/* USART1 DMA DeInit */
|
||||
HAL_DMA_DeInit(uartHandle->hdmarx);
|
||||
@@ -379,10 +487,10 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||
__HAL_RCC_USART2_CLK_DISABLE();
|
||||
|
||||
/**USART2 GPIO Configuration
|
||||
PD5 ------> USART2_TX
|
||||
PD6 ------> USART2_RX
|
||||
PA2 ------> USART2_TX
|
||||
PA3 ------> USART2_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOD, GPIO_PIN_5|GPIO_PIN_6);
|
||||
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_2|GPIO_PIN_3);
|
||||
|
||||
/* USART2 DMA DeInit */
|
||||
HAL_DMA_DeInit(uartHandle->hdmarx);
|
||||
@@ -394,6 +502,42 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef* uartHandle)
|
||||
|
||||
/* USER CODE END USART2_MspDeInit 1 */
|
||||
}
|
||||
else if(uartHandle->Instance==USART3)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END USART3_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_USART3_CLK_DISABLE();
|
||||
|
||||
/**USART3 GPIO Configuration
|
||||
PB10 ------> USART3_TX
|
||||
PB11 ------> USART3_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOB, GPIO_PIN_10|GPIO_PIN_11);
|
||||
|
||||
/* USER CODE BEGIN USART3_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END USART3_MspDeInit 1 */
|
||||
}
|
||||
else if(uartHandle->Instance==USART6)
|
||||
{
|
||||
/* USER CODE BEGIN USART6_MspDeInit 0 */
|
||||
|
||||
/* USER CODE END USART6_MspDeInit 0 */
|
||||
/* Peripheral clock disable */
|
||||
__HAL_RCC_USART6_CLK_DISABLE();
|
||||
|
||||
/**USART6 GPIO Configuration
|
||||
PC6 ------> USART6_TX
|
||||
PC7 ------> USART6_RX
|
||||
*/
|
||||
HAL_GPIO_DeInit(GPIOC, GPIO_PIN_6|GPIO_PIN_7);
|
||||
|
||||
/* USER CODE BEGIN USART6_MspDeInit 1 */
|
||||
|
||||
/* USER CODE END USART6_MspDeInit 1 */
|
||||
}
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
BIN
calib_board/Doc/漏液监控主系统_屏幕通讯协议_20260122.docx
Normal file
BIN
calib_board/Doc/漏液监控主系统_屏幕通讯协议_20260122.docx
Normal file
Binary file not shown.
729
calib_board/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h
Normal file
729
calib_board/Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_spi.h
Normal file
@@ -0,0 +1,729 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f4xx_hal_spi.h
|
||||
* @author MCD Application Team
|
||||
* @brief Header file of SPI HAL module.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2016 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef STM32F4xx_HAL_SPI_H
|
||||
#define STM32F4xx_HAL_SPI_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "stm32f4xx_hal_def.h"
|
||||
|
||||
/** @addtogroup STM32F4xx_HAL_Driver
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup SPI
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/** @defgroup SPI_Exported_Types SPI Exported Types
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief SPI Configuration Structure definition
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t Mode; /*!< Specifies the SPI operating mode.
|
||||
This parameter can be a value of @ref SPI_Mode */
|
||||
|
||||
uint32_t Direction; /*!< Specifies the SPI bidirectional mode state.
|
||||
This parameter can be a value of @ref SPI_Direction */
|
||||
|
||||
uint32_t DataSize; /*!< Specifies the SPI data size.
|
||||
This parameter can be a value of @ref SPI_Data_Size */
|
||||
|
||||
uint32_t CLKPolarity; /*!< Specifies the serial clock steady state.
|
||||
This parameter can be a value of @ref SPI_Clock_Polarity */
|
||||
|
||||
uint32_t CLKPhase; /*!< Specifies the clock active edge for the bit capture.
|
||||
This parameter can be a value of @ref SPI_Clock_Phase */
|
||||
|
||||
uint32_t NSS; /*!< Specifies whether the NSS signal is managed by
|
||||
hardware (NSS pin) or by software using the SSI bit.
|
||||
This parameter can be a value of @ref SPI_Slave_Select_management */
|
||||
|
||||
uint32_t BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will be
|
||||
used to configure the transmit and receive SCK clock.
|
||||
This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||
@note The communication clock is derived from the master
|
||||
clock. The slave clock does not need to be set. */
|
||||
|
||||
uint32_t FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.
|
||||
This parameter can be a value of @ref SPI_MSB_LSB_transmission */
|
||||
|
||||
uint32_t TIMode; /*!< Specifies if the TI mode is enabled or not.
|
||||
This parameter can be a value of @ref SPI_TI_mode */
|
||||
|
||||
uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not.
|
||||
This parameter can be a value of @ref SPI_CRC_Calculation */
|
||||
|
||||
uint32_t CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation.
|
||||
This parameter must be an odd number between Min_Data = 1 and Max_Data = 65535 */
|
||||
} SPI_InitTypeDef;
|
||||
|
||||
/**
|
||||
* @brief HAL SPI State structure definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
HAL_SPI_STATE_RESET = 0x00U, /*!< Peripheral not Initialized */
|
||||
HAL_SPI_STATE_READY = 0x01U, /*!< Peripheral Initialized and ready for use */
|
||||
HAL_SPI_STATE_BUSY = 0x02U, /*!< an internal process is ongoing */
|
||||
HAL_SPI_STATE_BUSY_TX = 0x03U, /*!< Data Transmission process is ongoing */
|
||||
HAL_SPI_STATE_BUSY_RX = 0x04U, /*!< Data Reception process is ongoing */
|
||||
HAL_SPI_STATE_BUSY_TX_RX = 0x05U, /*!< Data Transmission and Reception process is ongoing */
|
||||
HAL_SPI_STATE_ERROR = 0x06U, /*!< SPI error state */
|
||||
HAL_SPI_STATE_ABORT = 0x07U /*!< SPI abort is ongoing */
|
||||
} HAL_SPI_StateTypeDef;
|
||||
|
||||
/**
|
||||
* @brief SPI handle Structure definition
|
||||
*/
|
||||
typedef struct __SPI_HandleTypeDef
|
||||
{
|
||||
SPI_TypeDef *Instance; /*!< SPI registers base address */
|
||||
|
||||
SPI_InitTypeDef Init; /*!< SPI communication parameters */
|
||||
|
||||
uint8_t *pTxBuffPtr; /*!< Pointer to SPI Tx transfer Buffer */
|
||||
|
||||
uint16_t TxXferSize; /*!< SPI Tx Transfer size */
|
||||
|
||||
__IO uint16_t TxXferCount; /*!< SPI Tx Transfer Counter */
|
||||
|
||||
uint8_t *pRxBuffPtr; /*!< Pointer to SPI Rx transfer Buffer */
|
||||
|
||||
uint16_t RxXferSize; /*!< SPI Rx Transfer size */
|
||||
|
||||
__IO uint16_t RxXferCount; /*!< SPI Rx Transfer Counter */
|
||||
|
||||
void (*RxISR)(struct __SPI_HandleTypeDef *hspi); /*!< function pointer on Rx ISR */
|
||||
|
||||
void (*TxISR)(struct __SPI_HandleTypeDef *hspi); /*!< function pointer on Tx ISR */
|
||||
|
||||
DMA_HandleTypeDef *hdmatx; /*!< SPI Tx DMA Handle parameters */
|
||||
|
||||
DMA_HandleTypeDef *hdmarx; /*!< SPI Rx DMA Handle parameters */
|
||||
|
||||
HAL_LockTypeDef Lock; /*!< Locking object */
|
||||
|
||||
__IO HAL_SPI_StateTypeDef State; /*!< SPI communication state */
|
||||
|
||||
__IO uint32_t ErrorCode; /*!< SPI Error code */
|
||||
|
||||
#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
|
||||
void (* TxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Tx Completed callback */
|
||||
void (* RxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Rx Completed callback */
|
||||
void (* TxRxCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI TxRx Completed callback */
|
||||
void (* TxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Tx Half Completed callback */
|
||||
void (* RxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Rx Half Completed callback */
|
||||
void (* TxRxHalfCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI TxRx Half Completed callback */
|
||||
void (* ErrorCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Error callback */
|
||||
void (* AbortCpltCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Abort callback */
|
||||
void (* MspInitCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Msp Init callback */
|
||||
void (* MspDeInitCallback)(struct __SPI_HandleTypeDef *hspi); /*!< SPI Msp DeInit callback */
|
||||
|
||||
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
|
||||
} SPI_HandleTypeDef;
|
||||
|
||||
#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
|
||||
/**
|
||||
* @brief HAL SPI Callback ID enumeration definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
HAL_SPI_TX_COMPLETE_CB_ID = 0x00U, /*!< SPI Tx Completed callback ID */
|
||||
HAL_SPI_RX_COMPLETE_CB_ID = 0x01U, /*!< SPI Rx Completed callback ID */
|
||||
HAL_SPI_TX_RX_COMPLETE_CB_ID = 0x02U, /*!< SPI TxRx Completed callback ID */
|
||||
HAL_SPI_TX_HALF_COMPLETE_CB_ID = 0x03U, /*!< SPI Tx Half Completed callback ID */
|
||||
HAL_SPI_RX_HALF_COMPLETE_CB_ID = 0x04U, /*!< SPI Rx Half Completed callback ID */
|
||||
HAL_SPI_TX_RX_HALF_COMPLETE_CB_ID = 0x05U, /*!< SPI TxRx Half Completed callback ID */
|
||||
HAL_SPI_ERROR_CB_ID = 0x06U, /*!< SPI Error callback ID */
|
||||
HAL_SPI_ABORT_CB_ID = 0x07U, /*!< SPI Abort callback ID */
|
||||
HAL_SPI_MSPINIT_CB_ID = 0x08U, /*!< SPI Msp Init callback ID */
|
||||
HAL_SPI_MSPDEINIT_CB_ID = 0x09U /*!< SPI Msp DeInit callback ID */
|
||||
|
||||
} HAL_SPI_CallbackIDTypeDef;
|
||||
|
||||
/**
|
||||
* @brief HAL SPI Callback pointer definition
|
||||
*/
|
||||
typedef void (*pSPI_CallbackTypeDef)(SPI_HandleTypeDef *hspi); /*!< pointer to an SPI callback function */
|
||||
|
||||
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/** @defgroup SPI_Exported_Constants SPI Exported Constants
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Error_Code SPI Error Code
|
||||
* @{
|
||||
*/
|
||||
#define HAL_SPI_ERROR_NONE (0x00000000U) /*!< No error */
|
||||
#define HAL_SPI_ERROR_MODF (0x00000001U) /*!< MODF error */
|
||||
#define HAL_SPI_ERROR_CRC (0x00000002U) /*!< CRC error */
|
||||
#define HAL_SPI_ERROR_OVR (0x00000004U) /*!< OVR error */
|
||||
#define HAL_SPI_ERROR_FRE (0x00000008U) /*!< FRE error */
|
||||
#define HAL_SPI_ERROR_DMA (0x00000010U) /*!< DMA transfer error */
|
||||
#define HAL_SPI_ERROR_FLAG (0x00000020U) /*!< Error on RXNE/TXE/BSY Flag */
|
||||
#define HAL_SPI_ERROR_ABORT (0x00000040U) /*!< Error during SPI Abort procedure */
|
||||
#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
|
||||
#define HAL_SPI_ERROR_INVALID_CALLBACK (0x00000080U) /*!< Invalid Callback error */
|
||||
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Mode SPI Mode
|
||||
* @{
|
||||
*/
|
||||
#define SPI_MODE_SLAVE (0x00000000U)
|
||||
#define SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI)
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Direction SPI Direction Mode
|
||||
* @{
|
||||
*/
|
||||
#define SPI_DIRECTION_2LINES (0x00000000U)
|
||||
#define SPI_DIRECTION_2LINES_RXONLY SPI_CR1_RXONLY
|
||||
#define SPI_DIRECTION_1LINE SPI_CR1_BIDIMODE
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Data_Size SPI Data Size
|
||||
* @{
|
||||
*/
|
||||
#define SPI_DATASIZE_8BIT (0x00000000U)
|
||||
#define SPI_DATASIZE_16BIT SPI_CR1_DFF
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Clock_Polarity SPI Clock Polarity
|
||||
* @{
|
||||
*/
|
||||
#define SPI_POLARITY_LOW (0x00000000U)
|
||||
#define SPI_POLARITY_HIGH SPI_CR1_CPOL
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Clock_Phase SPI Clock Phase
|
||||
* @{
|
||||
*/
|
||||
#define SPI_PHASE_1EDGE (0x00000000U)
|
||||
#define SPI_PHASE_2EDGE SPI_CR1_CPHA
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Slave_Select_management SPI Slave Select Management
|
||||
* @{
|
||||
*/
|
||||
#define SPI_NSS_SOFT SPI_CR1_SSM
|
||||
#define SPI_NSS_HARD_INPUT (0x00000000U)
|
||||
#define SPI_NSS_HARD_OUTPUT (SPI_CR2_SSOE << 16U)
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_BaudRate_Prescaler SPI BaudRate Prescaler
|
||||
* @{
|
||||
*/
|
||||
#define SPI_BAUDRATEPRESCALER_2 (0x00000000U)
|
||||
#define SPI_BAUDRATEPRESCALER_4 (SPI_CR1_BR_0)
|
||||
#define SPI_BAUDRATEPRESCALER_8 (SPI_CR1_BR_1)
|
||||
#define SPI_BAUDRATEPRESCALER_16 (SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||
#define SPI_BAUDRATEPRESCALER_32 (SPI_CR1_BR_2)
|
||||
#define SPI_BAUDRATEPRESCALER_64 (SPI_CR1_BR_2 | SPI_CR1_BR_0)
|
||||
#define SPI_BAUDRATEPRESCALER_128 (SPI_CR1_BR_2 | SPI_CR1_BR_1)
|
||||
#define SPI_BAUDRATEPRESCALER_256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0)
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_MSB_LSB_transmission SPI MSB LSB Transmission
|
||||
* @{
|
||||
*/
|
||||
#define SPI_FIRSTBIT_MSB (0x00000000U)
|
||||
#define SPI_FIRSTBIT_LSB SPI_CR1_LSBFIRST
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_TI_mode SPI TI Mode
|
||||
* @{
|
||||
*/
|
||||
#define SPI_TIMODE_DISABLE (0x00000000U)
|
||||
#define SPI_TIMODE_ENABLE SPI_CR2_FRF
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_CRC_Calculation SPI CRC Calculation
|
||||
* @{
|
||||
*/
|
||||
#define SPI_CRCCALCULATION_DISABLE (0x00000000U)
|
||||
#define SPI_CRCCALCULATION_ENABLE SPI_CR1_CRCEN
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Interrupt_definition SPI Interrupt Definition
|
||||
* @{
|
||||
*/
|
||||
#define SPI_IT_TXE SPI_CR2_TXEIE
|
||||
#define SPI_IT_RXNE SPI_CR2_RXNEIE
|
||||
#define SPI_IT_ERR SPI_CR2_ERRIE
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @defgroup SPI_Flags_definition SPI Flags Definition
|
||||
* @{
|
||||
*/
|
||||
#define SPI_FLAG_RXNE SPI_SR_RXNE /* SPI status flag: Rx buffer not empty flag */
|
||||
#define SPI_FLAG_TXE SPI_SR_TXE /* SPI status flag: Tx buffer empty flag */
|
||||
#define SPI_FLAG_BSY SPI_SR_BSY /* SPI status flag: Busy flag */
|
||||
#define SPI_FLAG_CRCERR SPI_SR_CRCERR /* SPI Error flag: CRC error flag */
|
||||
#define SPI_FLAG_MODF SPI_SR_MODF /* SPI Error flag: Mode fault flag */
|
||||
#define SPI_FLAG_OVR SPI_SR_OVR /* SPI Error flag: Overrun flag */
|
||||
#define SPI_FLAG_FRE SPI_SR_FRE /* SPI Error flag: TI mode frame format error flag */
|
||||
#define SPI_FLAG_MASK (SPI_SR_RXNE | SPI_SR_TXE | SPI_SR_BSY | SPI_SR_CRCERR\
|
||||
| SPI_SR_MODF | SPI_SR_OVR | SPI_SR_FRE)
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Exported macros -----------------------------------------------------------*/
|
||||
/** @defgroup SPI_Exported_Macros SPI Exported Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @brief Reset SPI handle state.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
|
||||
#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) do{ \
|
||||
(__HANDLE__)->State = HAL_SPI_STATE_RESET; \
|
||||
(__HANDLE__)->MspInitCallback = NULL; \
|
||||
(__HANDLE__)->MspDeInitCallback = NULL; \
|
||||
} while(0)
|
||||
#else
|
||||
#define __HAL_SPI_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_SPI_STATE_RESET)
|
||||
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
|
||||
|
||||
/** @brief Enable the specified SPI interrupts.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @param __INTERRUPT__ specifies the interrupt source to enable.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||
* @arg SPI_IT_ERR: Error interrupt enable
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_ENABLE_IT(__HANDLE__, __INTERRUPT__) SET_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||
|
||||
/** @brief Disable the specified SPI interrupts.
|
||||
* @param __HANDLE__ specifies the SPI handle.
|
||||
* This parameter can be SPIx where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @param __INTERRUPT__ specifies the interrupt source to disable.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||
* @arg SPI_IT_ERR: Error interrupt enable
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_DISABLE_IT(__HANDLE__, __INTERRUPT__) CLEAR_BIT((__HANDLE__)->Instance->CR2, (__INTERRUPT__))
|
||||
|
||||
/** @brief Check whether the specified SPI interrupt source is enabled or not.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @param __INTERRUPT__ specifies the SPI interrupt source to check.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||
* @arg SPI_IT_ERR: Error interrupt enable
|
||||
* @retval The new state of __IT__ (TRUE or FALSE).
|
||||
*/
|
||||
#define __HAL_SPI_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR2\
|
||||
& (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
||||
|
||||
/** @brief Check whether the specified SPI flag is set or not.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @param __FLAG__ specifies the flag to check.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_FLAG_RXNE: Receive buffer not empty flag
|
||||
* @arg SPI_FLAG_TXE: Transmit buffer empty flag
|
||||
* @arg SPI_FLAG_CRCERR: CRC error flag
|
||||
* @arg SPI_FLAG_MODF: Mode fault flag
|
||||
* @arg SPI_FLAG_OVR: Overrun flag
|
||||
* @arg SPI_FLAG_BSY: Busy flag
|
||||
* @arg SPI_FLAG_FRE: Frame format error flag
|
||||
* @retval The new state of __FLAG__ (TRUE or FALSE).
|
||||
*/
|
||||
#define __HAL_SPI_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))
|
||||
|
||||
/** @brief Clear the SPI CRCERR pending flag.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_CLEAR_CRCERRFLAG(__HANDLE__) ((__HANDLE__)->Instance->SR = (uint16_t)(~SPI_FLAG_CRCERR))
|
||||
|
||||
/** @brief Clear the SPI MODF pending flag.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_CLEAR_MODFFLAG(__HANDLE__) \
|
||||
do{ \
|
||||
__IO uint32_t tmpreg_modf = 0x00U; \
|
||||
tmpreg_modf = (__HANDLE__)->Instance->SR; \
|
||||
CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE); \
|
||||
UNUSED(tmpreg_modf); \
|
||||
} while(0U)
|
||||
|
||||
/** @brief Clear the SPI OVR pending flag.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_CLEAR_OVRFLAG(__HANDLE__) \
|
||||
do{ \
|
||||
__IO uint32_t tmpreg_ovr = 0x00U; \
|
||||
tmpreg_ovr = (__HANDLE__)->Instance->DR; \
|
||||
tmpreg_ovr = (__HANDLE__)->Instance->SR; \
|
||||
UNUSED(tmpreg_ovr); \
|
||||
} while(0U)
|
||||
|
||||
/** @brief Clear the SPI FRE pending flag.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_CLEAR_FREFLAG(__HANDLE__) \
|
||||
do{ \
|
||||
__IO uint32_t tmpreg_fre = 0x00U; \
|
||||
tmpreg_fre = (__HANDLE__)->Instance->SR; \
|
||||
UNUSED(tmpreg_fre); \
|
||||
}while(0U)
|
||||
|
||||
/** @brief Enable the SPI peripheral.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_ENABLE(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||
|
||||
/** @brief Disable the SPI peripheral.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define __HAL_SPI_DISABLE(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_SPE)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Private macros ------------------------------------------------------------*/
|
||||
/** @defgroup SPI_Private_Macros SPI Private Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @brief Set the SPI transmit-only mode.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define SPI_1LINE_TX(__HANDLE__) SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||
|
||||
/** @brief Set the SPI receive-only mode.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define SPI_1LINE_RX(__HANDLE__) CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_BIDIOE)
|
||||
|
||||
/** @brief Reset the CRC calculation of the SPI.
|
||||
* @param __HANDLE__ specifies the SPI Handle.
|
||||
* This parameter can be SPI where x: 1, 2, or 3 to select the SPI peripheral.
|
||||
* @retval None
|
||||
*/
|
||||
#define SPI_RESET_CRC(__HANDLE__) do{CLEAR_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);\
|
||||
SET_BIT((__HANDLE__)->Instance->CR1, SPI_CR1_CRCEN);}while(0U)
|
||||
|
||||
/** @brief Check whether the specified SPI flag is set or not.
|
||||
* @param __SR__ copy of SPI SR register.
|
||||
* @param __FLAG__ specifies the flag to check.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_FLAG_RXNE: Receive buffer not empty flag
|
||||
* @arg SPI_FLAG_TXE: Transmit buffer empty flag
|
||||
* @arg SPI_FLAG_CRCERR: CRC error flag
|
||||
* @arg SPI_FLAG_MODF: Mode fault flag
|
||||
* @arg SPI_FLAG_OVR: Overrun flag
|
||||
* @arg SPI_FLAG_BSY: Busy flag
|
||||
* @arg SPI_FLAG_FRE: Frame format error flag
|
||||
* @retval SET or RESET.
|
||||
*/
|
||||
#define SPI_CHECK_FLAG(__SR__, __FLAG__) ((((__SR__) & ((__FLAG__) & SPI_FLAG_MASK)) == \
|
||||
((__FLAG__) & SPI_FLAG_MASK)) ? SET : RESET)
|
||||
|
||||
/** @brief Check whether the specified SPI Interrupt is set or not.
|
||||
* @param __CR2__ copy of SPI CR2 register.
|
||||
* @param __INTERRUPT__ specifies the SPI interrupt source to check.
|
||||
* This parameter can be one of the following values:
|
||||
* @arg SPI_IT_TXE: Tx buffer empty interrupt enable
|
||||
* @arg SPI_IT_RXNE: RX buffer not empty interrupt enable
|
||||
* @arg SPI_IT_ERR: Error interrupt enable
|
||||
* @retval SET or RESET.
|
||||
*/
|
||||
#define SPI_CHECK_IT_SOURCE(__CR2__, __INTERRUPT__) ((((__CR2__) & (__INTERRUPT__)) == \
|
||||
(__INTERRUPT__)) ? SET : RESET)
|
||||
|
||||
/** @brief Checks if SPI Mode parameter is in allowed range.
|
||||
* @param __MODE__ specifies the SPI Mode.
|
||||
* This parameter can be a value of @ref SPI_Mode
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_MODE(__MODE__) (((__MODE__) == SPI_MODE_SLAVE) || \
|
||||
((__MODE__) == SPI_MODE_MASTER))
|
||||
|
||||
/** @brief Checks if SPI Direction Mode parameter is in allowed range.
|
||||
* @param __MODE__ specifies the SPI Direction Mode.
|
||||
* This parameter can be a value of @ref SPI_Direction
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_DIRECTION(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||
((__MODE__) == SPI_DIRECTION_2LINES_RXONLY) || \
|
||||
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||
|
||||
/** @brief Checks if SPI Direction Mode parameter is 2 lines.
|
||||
* @param __MODE__ specifies the SPI Direction Mode.
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_DIRECTION_2LINES(__MODE__) ((__MODE__) == SPI_DIRECTION_2LINES)
|
||||
|
||||
/** @brief Checks if SPI Direction Mode parameter is 1 or 2 lines.
|
||||
* @param __MODE__ specifies the SPI Direction Mode.
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_DIRECTION_2LINES_OR_1LINE(__MODE__) (((__MODE__) == SPI_DIRECTION_2LINES) || \
|
||||
((__MODE__) == SPI_DIRECTION_1LINE))
|
||||
|
||||
/** @brief Checks if SPI Data Size parameter is in allowed range.
|
||||
* @param __DATASIZE__ specifies the SPI Data Size.
|
||||
* This parameter can be a value of @ref SPI_Data_Size
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_DATASIZE(__DATASIZE__) (((__DATASIZE__) == SPI_DATASIZE_16BIT) || \
|
||||
((__DATASIZE__) == SPI_DATASIZE_8BIT))
|
||||
|
||||
/** @brief Checks if SPI Serial clock steady state parameter is in allowed range.
|
||||
* @param __CPOL__ specifies the SPI serial clock steady state.
|
||||
* This parameter can be a value of @ref SPI_Clock_Polarity
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_CPOL(__CPOL__) (((__CPOL__) == SPI_POLARITY_LOW) || \
|
||||
((__CPOL__) == SPI_POLARITY_HIGH))
|
||||
|
||||
/** @brief Checks if SPI Clock Phase parameter is in allowed range.
|
||||
* @param __CPHA__ specifies the SPI Clock Phase.
|
||||
* This parameter can be a value of @ref SPI_Clock_Phase
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_CPHA(__CPHA__) (((__CPHA__) == SPI_PHASE_1EDGE) || \
|
||||
((__CPHA__) == SPI_PHASE_2EDGE))
|
||||
|
||||
/** @brief Checks if SPI Slave Select parameter is in allowed range.
|
||||
* @param __NSS__ specifies the SPI Slave Select management parameter.
|
||||
* This parameter can be a value of @ref SPI_Slave_Select_management
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_NSS(__NSS__) (((__NSS__) == SPI_NSS_SOFT) || \
|
||||
((__NSS__) == SPI_NSS_HARD_INPUT) || \
|
||||
((__NSS__) == SPI_NSS_HARD_OUTPUT))
|
||||
|
||||
/** @brief Checks if SPI Baudrate prescaler parameter is in allowed range.
|
||||
* @param __PRESCALER__ specifies the SPI Baudrate prescaler.
|
||||
* This parameter can be a value of @ref SPI_BaudRate_Prescaler
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_BAUDRATE_PRESCALER(__PRESCALER__) (((__PRESCALER__) == SPI_BAUDRATEPRESCALER_2) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_4) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_8) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_16) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_32) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_64) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_128) || \
|
||||
((__PRESCALER__) == SPI_BAUDRATEPRESCALER_256))
|
||||
|
||||
/** @brief Checks if SPI MSB LSB transmission parameter is in allowed range.
|
||||
* @param __BIT__ specifies the SPI MSB LSB transmission (whether data transfer starts from MSB or LSB bit).
|
||||
* This parameter can be a value of @ref SPI_MSB_LSB_transmission
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_FIRST_BIT(__BIT__) (((__BIT__) == SPI_FIRSTBIT_MSB) || \
|
||||
((__BIT__) == SPI_FIRSTBIT_LSB))
|
||||
|
||||
/** @brief Checks if SPI TI mode parameter is in allowed range.
|
||||
* @param __MODE__ specifies the SPI TI mode.
|
||||
* This parameter can be a value of @ref SPI_TI_mode
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_TIMODE(__MODE__) (((__MODE__) == SPI_TIMODE_DISABLE) || \
|
||||
((__MODE__) == SPI_TIMODE_ENABLE))
|
||||
|
||||
/** @brief Checks if SPI CRC calculation enabled state is in allowed range.
|
||||
* @param __CALCULATION__ specifies the SPI CRC calculation enable state.
|
||||
* This parameter can be a value of @ref SPI_CRC_Calculation
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_CRC_CALCULATION(__CALCULATION__) (((__CALCULATION__) == SPI_CRCCALCULATION_DISABLE) || \
|
||||
((__CALCULATION__) == SPI_CRCCALCULATION_ENABLE))
|
||||
|
||||
/** @brief Checks if SPI polynomial value to be used for the CRC calculation, is in allowed range.
|
||||
* @param __POLYNOMIAL__ specifies the SPI polynomial value to be used for the CRC calculation.
|
||||
* This parameter must be a number between Min_Data = 0 and Max_Data = 65535
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_CRC_POLYNOMIAL(__POLYNOMIAL__) (((__POLYNOMIAL__) >= 0x1U) && \
|
||||
((__POLYNOMIAL__) <= 0xFFFFU) && \
|
||||
(((__POLYNOMIAL__)&0x1U) != 0U))
|
||||
|
||||
/** @brief Checks if DMA handle is valid.
|
||||
* @param __HANDLE__ specifies a DMA Handle.
|
||||
* @retval None
|
||||
*/
|
||||
#define IS_SPI_DMA_HANDLE(__HANDLE__) ((__HANDLE__) != NULL)
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/* Exported functions --------------------------------------------------------*/
|
||||
/** @addtogroup SPI_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup SPI_Exported_Functions_Group1
|
||||
* @{
|
||||
*/
|
||||
/* Initialization/de-initialization functions ********************************/
|
||||
HAL_StatusTypeDef HAL_SPI_Init(SPI_HandleTypeDef *hspi);
|
||||
HAL_StatusTypeDef HAL_SPI_DeInit(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_MspDeInit(SPI_HandleTypeDef *hspi);
|
||||
|
||||
/* Callbacks Register/UnRegister functions ***********************************/
|
||||
#if (USE_HAL_SPI_REGISTER_CALLBACKS == 1U)
|
||||
HAL_StatusTypeDef HAL_SPI_RegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID,
|
||||
pSPI_CallbackTypeDef pCallback);
|
||||
HAL_StatusTypeDef HAL_SPI_UnRegisterCallback(SPI_HandleTypeDef *hspi, HAL_SPI_CallbackIDTypeDef CallbackID);
|
||||
#endif /* USE_HAL_SPI_REGISTER_CALLBACKS */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup SPI_Exported_Functions_Group2
|
||||
* @{
|
||||
*/
|
||||
/* I/O operation functions ***************************************************/
|
||||
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||
HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);
|
||||
HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size,
|
||||
uint32_t Timeout);
|
||||
HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData,
|
||||
uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData,
|
||||
uint16_t Size);
|
||||
HAL_StatusTypeDef HAL_SPI_DMAPause(SPI_HandleTypeDef *hspi);
|
||||
HAL_StatusTypeDef HAL_SPI_DMAResume(SPI_HandleTypeDef *hspi);
|
||||
HAL_StatusTypeDef HAL_SPI_DMAStop(SPI_HandleTypeDef *hspi);
|
||||
/* Transfer Abort functions */
|
||||
HAL_StatusTypeDef HAL_SPI_Abort(SPI_HandleTypeDef *hspi);
|
||||
HAL_StatusTypeDef HAL_SPI_Abort_IT(SPI_HandleTypeDef *hspi);
|
||||
|
||||
void HAL_SPI_IRQHandler(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_TxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_TxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_RxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_TxRxHalfCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_ErrorCallback(SPI_HandleTypeDef *hspi);
|
||||
void HAL_SPI_AbortCpltCallback(SPI_HandleTypeDef *hspi);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/** @addtogroup SPI_Exported_Functions_Group3
|
||||
* @{
|
||||
*/
|
||||
/* Peripheral State and Error functions ***************************************/
|
||||
HAL_SPI_StateTypeDef HAL_SPI_GetState(SPI_HandleTypeDef *hspi);
|
||||
uint32_t HAL_SPI_GetError(SPI_HandleTypeDef *hspi);
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* STM32F4xx_HAL_SPI_H */
|
||||
|
||||
3915
calib_board/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
Normal file
3915
calib_board/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -10,7 +10,7 @@
|
||||
<aExt>*.s*; *.src; *.a*</aExt>
|
||||
<oExt>*.obj; *.o</oExt>
|
||||
<lExt>*.lib</lExt>
|
||||
<tExt>*.txt; *.h; *.inc</tExt>
|
||||
<tExt>*.txt; *.h; *.inc; *.md</tExt>
|
||||
<pExt>*.plm</pExt>
|
||||
<CppX>*.cpp</CppX>
|
||||
<nMigrate>0</nMigrate>
|
||||
@@ -26,7 +26,7 @@
|
||||
<ToolsetNumber>0x4</ToolsetNumber>
|
||||
<ToolsetName>ARM-ADS</ToolsetName>
|
||||
<TargetOption>
|
||||
<CLKADS>12000000</CLKADS>
|
||||
<CLKADS>8000000</CLKADS>
|
||||
<OPTTT>
|
||||
<gFlags>1</gFlags>
|
||||
<BeepAtEnd>1</BeepAtEnd>
|
||||
@@ -117,6 +117,25 @@
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
<Name>-L70 -Z18 -C0 -M0 -T1</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGTARM</Key>
|
||||
<Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(1012=-1,-1,-1,-1,0)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMDBGFLAGS</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
@@ -129,18 +148,25 @@
|
||||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>id</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
<DebugFlag>
|
||||
<trace>0</trace>
|
||||
<periodic>0</periodic>
|
||||
<aLwin>0</aLwin>
|
||||
<aLwin>1</aLwin>
|
||||
<aCover>0</aCover>
|
||||
<aSer1>0</aSer1>
|
||||
<aSer2>0</aSer2>
|
||||
<aPa>0</aPa>
|
||||
<viewmode>0</viewmode>
|
||||
<viewmode>1</viewmode>
|
||||
<vrSel>0</vrSel>
|
||||
<aSym>0</aSym>
|
||||
<aTbox>0</aTbox>
|
||||
@@ -203,7 +229,7 @@
|
||||
|
||||
<Group>
|
||||
<GroupName>Application/User/Core</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -250,6 +276,18 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Core/Src/spi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>spi.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Core/Src/usart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>usart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -257,7 +295,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -269,7 +307,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -287,18 +325,6 @@
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
@@ -306,8 +332,8 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_tim_ex.c</FilenameWithoutPath>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_spi.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -318,18 +344,6 @@
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_rcc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
@@ -337,7 +351,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -349,7 +363,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -361,7 +375,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -373,7 +387,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -385,7 +399,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -397,7 +411,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -409,7 +423,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -421,7 +435,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -433,7 +447,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileNumber>19</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -445,7 +459,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileNumber>20</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -457,7 +471,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -469,7 +483,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -479,17 +493,53 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_tim_ex.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_hal_uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>Drivers/CMSIS</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -509,7 +559,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -521,19 +571,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\app\os_timer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>os_timer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -543,6 +581,54 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\app\app_timer.c</PathWithFileName>
|
||||
<FilenameWithoutPath>app_timer.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\app\app_leakage.c</PathWithFileName>
|
||||
<FilenameWithoutPath>app_leakage.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\app\app_com.c</PathWithFileName>
|
||||
<FilenameWithoutPath>app_com.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\app\usr_config.h</PathWithFileName>
|
||||
<FilenameWithoutPath>usr_config.h</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
@@ -553,7 +639,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -573,7 +659,7 @@
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>29</FileNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -585,7 +671,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>30</FileNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -597,19 +683,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>31</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\bsp\bsp_Uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp_Uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>32</FileNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -621,7 +695,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>33</FileNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -633,7 +707,7 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>34</FileNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -645,25 +719,69 @@
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>35</FileNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\bsp\tjc_usart_hmi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tjc_usart_hmi.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\usr\bsp\bsp_uart.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp_uart.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>5</FileType>
|
||||
<FileNumber>40</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\bsp\tjc_usart_hmi.h</PathWithFileName>
|
||||
<FilenameWithoutPath>tjc_usart_hmi.h</FilenameWithoutPath>
|
||||
<PathWithFileName>..\usr\bsp\bsp_w25q.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp_w25q.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>41</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\bsp\bsp_DS1302.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp_DS1302.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>42</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\bsp\bsp_W5500.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp_W5500.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>gui</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>43</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\usr\gui\gui_tjc_hmi.c</PathWithFileName>
|
||||
<FilenameWithoutPath>gui_tjc_hmi.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
@@ -676,8 +794,8 @@
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>44</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -688,8 +806,8 @@
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>45</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -700,8 +818,8 @@
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>46</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
@@ -712,8 +830,8 @@
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>40</FileNumber>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>47</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
||||
@@ -338,7 +338,7 @@
|
||||
<MiscControls></MiscControls>
|
||||
<Define>USE_HAL_DRIVER,STM32F407xx</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../usr/algo;../usr/app;../usr/bsp;../usr/protocol</IncludePath>
|
||||
<IncludePath>../Core/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../usr/algo;../usr/app;../usr/bsp;../usr/protocol;../usr/gui</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
@@ -407,6 +407,62 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Core/Src/dma.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Core/Src/spi.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>usart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -428,19 +484,60 @@
|
||||
<GroupName>Drivers/STM32F4xx_HAL_Driver</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_tim.c</FileName>
|
||||
<FileName>stm32f4xx_hal_spi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_tim_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c</FilePath>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_rcc.c</FileName>
|
||||
@@ -507,6 +604,21 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_tim_ex.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_hal_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@@ -527,16 +639,31 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\app.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>os_timer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\os_timer.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>gas_data.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\gas_data.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_timer.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\app_timer.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_leakage.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\app_leakage.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>app_com.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\app\app_com.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>usr_config.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\usr\app\usr_config.h</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
@@ -562,11 +689,6 @@
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\bsp_Led.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp_Uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\bsp_Uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp_Wdg.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
@@ -583,14 +705,34 @@
|
||||
<FilePath>..\usr\bsp\bsp_Flash.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tjc_usart_hmi.c</FileName>
|
||||
<FileName>bsp_uart.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\tjc_usart_hmi.c</FilePath>
|
||||
<FilePath>..\usr\bsp\bsp_uart.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tjc_usart_hmi.h</FileName>
|
||||
<FileType>5</FileType>
|
||||
<FilePath>..\usr\bsp\tjc_usart_hmi.h</FilePath>
|
||||
<FileName>bsp_w25q.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\bsp_w25q.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp_DS1302.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\bsp_DS1302.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp_W5500.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\bsp\bsp_W5500.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>gui</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>gui_tjc_hmi.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\usr\gui\gui_tjc_hmi.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -29,7 +29,7 @@
|
||||
; <o> Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Stack_Size EQU 0x800
|
||||
Stack_Size EQU 0x400
|
||||
|
||||
AREA STACK, NOINIT, READWRITE, ALIGN=3
|
||||
Stack_Mem SPACE Stack_Size
|
||||
@@ -40,7 +40,7 @@ __initial_sp
|
||||
; <o> Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
|
||||
; </h>
|
||||
|
||||
Heap_Size EQU 0x800
|
||||
Heap_Size EQU 0x200
|
||||
|
||||
AREA HEAP, NOINIT, READWRITE, ALIGN=3
|
||||
__heap_base
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#include "app.h"
|
||||
#include "os_timer.h"
|
||||
#include "app_timer.h"
|
||||
#include "stdio.h"
|
||||
#include "string.h"
|
||||
|
||||
@@ -8,21 +8,38 @@
|
||||
#include "bsp_Led.h"
|
||||
#include "bsp_74HC4067.h"
|
||||
#include "bsp_Flash.h"
|
||||
#include "tjc_usart_hmi.h"
|
||||
#include "bsp_w25q.h"
|
||||
|
||||
#include "proto_modbus_master_tdlas.h"
|
||||
#include "proto_modbus_slave_ex.h"
|
||||
|
||||
#include "gui_tjc_hmi.h"
|
||||
|
||||
const char *HwVersion = "V1.0";
|
||||
char SwVersion[24] = "V0.001.0";
|
||||
void TASK_Idle(void);
|
||||
void Task_10ms(void);
|
||||
void Task_50ms(void);
|
||||
void Task_100ms(void);
|
||||
void Task_200ms(void);
|
||||
void Task_500ms(void);
|
||||
void Task_1s(void);
|
||||
void Task_2s(void);
|
||||
void task_idle(void);
|
||||
void task_10ms(void);
|
||||
void task_50ms(void);
|
||||
void task_100ms(void);
|
||||
void task_200ms(void);
|
||||
void task_500ms(void);
|
||||
void task_1s(void);
|
||||
void task_2s(void);
|
||||
|
||||
#define APP_TIMER_TASK_NUM (sizeof(app_timer_task) / sizeof(app_timer_class_t))
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
app_timer_class_t app_timer_task[] =
|
||||
{
|
||||
{0, 1, 1, task_idle }, /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һֱִ<D6B1><D6B4>*/
|
||||
{0, 3, 10, task_10ms },
|
||||
{0, 7, 50, task_50ms },
|
||||
{0, 11, 100, task_100ms },
|
||||
{0, 13, 200, task_200ms },
|
||||
{0, 17, 500, task_500ms },
|
||||
{0, 19, 1000, task_1s },
|
||||
{0, 23, 2000, task_2s },
|
||||
};
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: AppInit
|
||||
@@ -31,114 +48,75 @@ void Task_2s(void);
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
******************************************/
|
||||
void App_Init(void)
|
||||
void app_init(void)
|
||||
{
|
||||
Usr_Flash.Init();
|
||||
|
||||
COM_Uart1.Init(&COM_Uart1);
|
||||
COM_Uart2.Init(&COM_Uart2);
|
||||
COM_Uart4.Init(&COM_Uart4);
|
||||
Led.Init();
|
||||
UartCH_Config.init();
|
||||
|
||||
/*<2A><><EFBFBD>ڳ<EFBFBD>ʼ<EFBFBD><CABC>*/
|
||||
com_uart1.init(&com_uart1);
|
||||
com_uart2.init(&com_uart2);
|
||||
com_uart4.init(&com_uart4);
|
||||
|
||||
UartCH_Config.init();
|
||||
|
||||
tdlas.init();
|
||||
modbus_slave_ex.init();
|
||||
TJC_Init(&COM_Uart2);
|
||||
initRingBuffer();
|
||||
char init_msg[] = "ϵͳ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>...\r\n";
|
||||
HAL_UART_Transmit(COM_Uart2.Uart, (uint8_t*)init_msg, strlen(init_msg), 100);
|
||||
app_timer.init(APP_TIMER_TASK_NUM,app_timer_task); /*<2A><>ʱ<EFBFBD><CAB1><EFBFBD>ã<EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD><C6AC>ѯ*/
|
||||
tjc_hmi.init();
|
||||
led.init();
|
||||
|
||||
//Wdg.Init();
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: App_Task
|
||||
* <20><><EFBFBD><EFBFBD>: App_task
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ѭ<EFBFBD><D1AD><EFBFBD>е<EFBFBD><D0B5><EFBFBD>
|
||||
******************************************/
|
||||
void App_Task(void)
|
||||
void app_task(void)
|
||||
{
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_10ms, osTime_MSecTick, 10))
|
||||
{
|
||||
OsTimeTick_10ms = osTime_MSecTick;
|
||||
Task_10ms();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_50ms, osTime_MSecTick, 50))
|
||||
{
|
||||
OsTimeTick_50ms = osTime_MSecTick;
|
||||
Task_50ms();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_100ms, osTime_MSecTick, 100))
|
||||
{
|
||||
OsTimeTick_100ms = osTime_MSecTick;
|
||||
Task_100ms();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_200ms, osTime_MSecTick, 200))
|
||||
{
|
||||
OsTimeTick_200ms = osTime_MSecTick;
|
||||
Task_200ms();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_500ms, osTime_MSecTick, 500))
|
||||
{
|
||||
OsTimeTick_500ms = osTime_MSecTick;
|
||||
Task_500ms();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_1s, osTime_MSecTick, 1000))
|
||||
{
|
||||
OsTimeTick_1s = osTime_MSecTick;
|
||||
Task_1s();
|
||||
}
|
||||
if (TIME_TRUE == OsTimer_CheckTimeOut(OsTimeTick_2s, osTime_MSecTick, 2000))
|
||||
{
|
||||
OsTimeTick_2s = osTime_MSecTick;
|
||||
Task_2s();
|
||||
}
|
||||
TASK_Idle();
|
||||
app_timer.task();
|
||||
task_idle();
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD>ִ<EFBFBD>еĺ<D0B5><C4BA><EFBFBD>*/
|
||||
void TASK_Idle(void)
|
||||
void task_idle(void)
|
||||
{
|
||||
COM_Uart1.Rx_Task(&COM_Uart1);
|
||||
COM_Uart2.Rx_Task(&COM_Uart2);
|
||||
COM_Uart4.Rx_Task(&COM_Uart4);
|
||||
com_uart1.rx_task(&com_uart1);
|
||||
com_uart2.rx_task(&com_uart2);
|
||||
com_uart4.rx_task(&com_uart4);
|
||||
}
|
||||
|
||||
void Task_10ms(void)
|
||||
void task_10ms(void)
|
||||
{
|
||||
}
|
||||
|
||||
void Task_50ms(void)
|
||||
void task_50ms(void)
|
||||
{
|
||||
// tdlas.tx_task();
|
||||
|
||||
}
|
||||
|
||||
void Task_100ms(void)
|
||||
void task_100ms(void)
|
||||
{
|
||||
// tdlas.tx_task();
|
||||
|
||||
}
|
||||
|
||||
void Task_200ms(void)
|
||||
void task_200ms(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Task_500ms(void)
|
||||
void task_500ms(void)
|
||||
{
|
||||
// UartCH_Config.ch_set(ch);
|
||||
// tdlas.tx_task();
|
||||
Led.Flash();
|
||||
led.task();
|
||||
}
|
||||
|
||||
|
||||
void Task_1s(void)
|
||||
void task_1s(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void Task_2s(void)
|
||||
void task_2s(void)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@@ -4,7 +4,12 @@
|
||||
extern const char *HwVersion;
|
||||
extern char SwVersion[24];
|
||||
|
||||
void App_Init(void);
|
||||
void App_Task(void);
|
||||
|
||||
|
||||
void app_init(void);
|
||||
void app_task(void);
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
7
calib_board/usr/app/app_com.c
Normal file
7
calib_board/usr/app/app_com.c
Normal file
@@ -0,0 +1,7 @@
|
||||
#include "app_com.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
28
calib_board/usr/app/app_com.h
Normal file
28
calib_board/usr/app/app_com.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#ifndef _APP_COM_H_
|
||||
#define _APP_COM_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "app_leakage.h"
|
||||
#include "bsp_uart.h"
|
||||
|
||||
#define APP_COM_NUM (4)
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 baudrate; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_com_flash_data_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
app_com_flash_data_t flash_data; /*flash<73><68><EFBFBD><EFBFBD>*/
|
||||
u16 device_num; /*<2A><EFBFBD><F3B6A8B5>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
u8 device_index[APP_LEAKAGE_SUB_DEVICE_NUM]; /*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
bsp_uart_t *uart; /*<2A><EFBFBD><F3B6A8B5>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_com_class_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
app_com_class_t com_class[APP_COM_NUM];
|
||||
}app_com_t;
|
||||
|
||||
#endif
|
||||
100
calib_board/usr/app/app_leakage.c
Normal file
100
calib_board/usr/app/app_leakage.c
Normal file
@@ -0,0 +1,100 @@
|
||||
#include "app_leakage.h"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
|
||||
app_leakage_t leakage =
|
||||
{
|
||||
|
||||
};
|
||||
app_leakage_t *p_leakage = &leakage;
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>࣬<EFBFBD><E0A3AC>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD>ֵ<EFBFBD>һ<EFBFBD><D2BB>*/
|
||||
static void app_leakage_region_classify(void)
|
||||
{
|
||||
u16 i,j;
|
||||
u8 add_region_flag;
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
p_leakage->region_num = 0;
|
||||
p_leakage->sub_device_num = 0;
|
||||
memset(p_leakage->region_data,0,sizeof(p_leakage->region_data));
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ*/
|
||||
for(i=0;i<APP_LEAKAGE_SUB_DEVICE_NUM;i++)
|
||||
{
|
||||
add_region_flag = 1; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
/*<2A>豸ʹ<E8B1B8><CAB9>*/
|
||||
if(ENABLE == p_leakage->sub_device_data[i].flash_data.state)
|
||||
{
|
||||
p_leakage->sub_device_num++;/*<2A><>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>++*/
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
for(j=0;j<APP_LEAKAGE_SUB_DEVICE_NUM;j++)
|
||||
{
|
||||
if(0 == memcmp(p_leakage->region_data[j].name,p_leakage->sub_device_data[i].flash_data.region_name, APP_LEAKAGE_STRING_NANE_LEN))/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬ*/
|
||||
{
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸*/
|
||||
p_leakage->region_data[j].sub_device_index[p_leakage->region_data[j].leakage_num] = i;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
p_leakage->region_data[j].leakage_num++; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>++*/
|
||||
add_region_flag = 0;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*û<><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD>ͬ<EFBFBD><CDAC><EFBFBD><EFBFBD>*/
|
||||
if(add_region_flag)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
memcpy(p_leakage->region_data[p_leakage->region_num].name,p_leakage->sub_device_data[i].flash_data.region_name, APP_LEAKAGE_STRING_NANE_LEN);
|
||||
p_leakage->region_data[p_leakage->region_num].sub_device_index[p_leakage->region_data[p_leakage->region_num].leakage_num] = i;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
p_leakage->region_data[p_leakage->region_num].leakage_num++; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD>++*/
|
||||
p_leakage->region_num++; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>++*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A>쳣״̬<D7B4>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>*/
|
||||
void app_leakage_task(void)
|
||||
{
|
||||
u16 i,j,k,sub_device_index;
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>쳣<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
for(i=0;i<p_leakage->region_num;i++)
|
||||
{
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>豸*/
|
||||
p_leakage->region_data[i].leakage_num = 0;
|
||||
p_leakage->region_data[i].open_num = 0;
|
||||
p_leakage->region_data[i].time_out_num = 0;
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸*/
|
||||
for(j=0;j<p_leakage->region_data[i].leakage_num;j++)
|
||||
{
|
||||
/*<2A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>*/
|
||||
sub_device_index = p_leakage->region_data[i].sub_device_index[j];
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>*/
|
||||
for(k=0;k<APP_LEAKAGE_SUB_DEVICE_CH_NUM;k++)
|
||||
{
|
||||
/*ͨѶ<CDA8><D1B6>ʱ*/
|
||||
if(p_leakage->sub_device_data[sub_device_index].ch_data[k].state & APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
p_leakage->region_data[i].time_out_num++;
|
||||
break;
|
||||
}
|
||||
/*<2A>ϴ<EFBFBD>*/
|
||||
else if(p_leakage->sub_device_data[sub_device_index].ch_data[k].state & APP_LEAKAGE_SUB_DEVICE_STATE_OPEN)
|
||||
{
|
||||
p_leakage->region_data[i].open_num++;
|
||||
break;
|
||||
}
|
||||
/*©Һ*/
|
||||
else if(p_leakage->sub_device_data[sub_device_index].ch_data[k].state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
p_leakage->region_data[i].leakage_num++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
62
calib_board/usr/app/app_leakage.h
Normal file
62
calib_board/usr/app/app_leakage.h
Normal file
@@ -0,0 +1,62 @@
|
||||
#ifndef _APP_LEAKAGE_H_
|
||||
#define _APP_LEAKAGE_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define ENABLE (1)
|
||||
#define DISABLE (0)
|
||||
|
||||
#define APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE (0x0001) /*©Һ״̬*/
|
||||
#define APP_LEAKAGE_SUB_DEVICE_STATE_OPEN (0x0002) /*<2A>ϴ<EFBFBD>״̬*/
|
||||
#define APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT (0xf000) /*ͨѶ<CDA8><D1B6>ʱ*/
|
||||
|
||||
#define APP_LEAKAGE_STRING_NANE_LEN (10)
|
||||
#define APP_LEAKAGE_SUB_DEVICE_NUM (32)
|
||||
#define APP_LEAKAGE_SUB_DEVICE_CH_NUM (4)
|
||||
|
||||
/*<2A><><EFBFBD>豸<EFBFBD>洢<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>*/
|
||||
typedef struct
|
||||
{
|
||||
u8 state; /*״̬ ʹ<><CAB9> <20><>ʹ<EFBFBD><CAB9>*/
|
||||
u8 com_port; /*<2A>˿<EFBFBD>*/
|
||||
u8 modbus_id; /*modbus id*/
|
||||
u8 device_name[APP_LEAKAGE_STRING_NANE_LEN]; /*<2A>豸<EFBFBD><E8B1B8>*/
|
||||
u8 region_name[APP_LEAKAGE_STRING_NANE_LEN]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_leakage_sub_device_flash_data_t;
|
||||
|
||||
/*<2A><><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ*/
|
||||
typedef struct
|
||||
{
|
||||
app_leakage_sub_device_flash_data_t flash_data; /*flash<73>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>*/
|
||||
struct
|
||||
{
|
||||
u16 state; /*״̬*/
|
||||
u16 distance; /*©Һ<C2A9><D2BA><EFBFBD><EFBFBD>*/
|
||||
}ch_data[APP_LEAKAGE_SUB_DEVICE_CH_NUM]; /*ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_leakage_sub_device_class_t;
|
||||
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||
typedef struct
|
||||
{
|
||||
u8 leakage_num; /*©Һ<C2A9><D2BA><EFBFBD><EFBFBD>*/
|
||||
u8 open_num; /*<2A>ϴ<EFBFBD><CFB4><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 time_out_num; /*ͨѶ<CDA8><D1B6>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
||||
u8 sub_device_num; /*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 name[APP_LEAKAGE_STRING_NANE_LEN]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 sub_device_index[APP_LEAKAGE_SUB_DEVICE_NUM]; /*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_leakage_region_data_class_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 region_num;
|
||||
u8 sub_device_num;
|
||||
app_leakage_region_data_class_t region_data[APP_LEAKAGE_SUB_DEVICE_NUM];
|
||||
app_leakage_sub_device_class_t sub_device_data[APP_LEAKAGE_SUB_DEVICE_NUM];
|
||||
|
||||
void (*init)(void); /*<2A><>ʼ<EFBFBD><CABC>*/
|
||||
void (*task)(void); /*ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}app_leakage_t;
|
||||
|
||||
extern app_leakage_t leakage;
|
||||
#endif
|
||||
195
calib_board/usr/app/app_timer.c
Normal file
195
calib_board/usr/app/app_timer.c
Normal file
@@ -0,0 +1,195 @@
|
||||
#include "app_timer.h"
|
||||
#include "app.h"
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void app_timer_task(void);
|
||||
static void app_timer_init(u8 task_num, app_timer_class_t *p_timer_class);
|
||||
static void app_timer_task_increment_int(u16 ms_tick);
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: app_timer
|
||||
* <20><><EFBFBD><EFBFBD>: Ӧ<>ö<EFBFBD>ʱ<EFBFBD><CAB1>ʵ<EFBFBD><CAB5>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ƽṹ<C6BD><E1B9B9><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
*******************************************/
|
||||
app_timer_t app_timer =
|
||||
{
|
||||
.p_timer_class = NULL,
|
||||
.init = app_timer_init,
|
||||
.task = app_timer_task,
|
||||
.increment_int = app_timer_task_increment_int,
|
||||
};
|
||||
|
||||
/* ȫ<><C8AB>ָ<EFBFBD>룬ָ<EBA3AC><D6B8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9> */
|
||||
app_timer_t *p_app_timer = &app_timer;
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: app_timer_init
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>
|
||||
* <20><><EFBFBD><EFBFBD>: task_num - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* p_timer_class - <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void app_timer_init(u8 task_num, app_timer_class_t *p_timer_class)
|
||||
{
|
||||
p_app_timer->task_num = task_num;
|
||||
p_app_timer->p_timer_class = p_timer_class;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: app_timer_task
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѵ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void app_timer_task(void)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if(NULL == p_app_timer->p_timer_class)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
for (i = 0; i < p_app_timer->task_num; i++)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫִ<D2AA><D6B4> */
|
||||
if (p_app_timer->p_timer_class[i].run_flag)
|
||||
{
|
||||
p_app_timer->p_timer_class[i].run_flag = 0; /* <20><><EFBFBD><EFBFBD>ִ<EFBFBD>б<EFBFBD>־ */
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if (p_app_timer->p_timer_class[i].task == NULL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
/* ִ<><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
p_app_timer->p_timer_class[i].task();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: app_timer_task_increment_int
|
||||
* <20><><EFBFBD><EFBFBD>: <20>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: ms_tick - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>ж<EFBFBD><D0B6>е<EFBFBD><D0B5>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>¶<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ
|
||||
*******************************************/
|
||||
static void app_timer_task_increment_int(u16 ms_tick)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
/* <20><><EFBFBD>º<EFBFBD><C2BA>뼶<EFBFBD><EBBCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
p_app_timer->ms_tick++;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>뼶<EFBFBD><EBBCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if(p_app_timer->ms_tick >= 1000)
|
||||
{
|
||||
p_app_timer->s_tick++;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if(NULL == p_app_timer->p_timer_class)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
for (i = 0; i < p_app_timer->task_num; i++)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if (p_app_timer->p_timer_class[i].timer_count)
|
||||
{
|
||||
p_app_timer->p_timer_class[i].timer_count--;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<C7B7><F1B5BDB4><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>ʱ<EFBFBD><CAB1> */
|
||||
if (p_app_timer->p_timer_class[i].timer_count == 0)
|
||||
{
|
||||
p_app_timer->p_timer_class[i].run_flag = 1;
|
||||
p_app_timer->p_timer_class[i].timer_count = p_app_timer->p_timer_class[i].timer_reload;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: app_timer_check_time_out
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>鳬ʱ
|
||||
* <20><><EFBFBD><EFBFBD>: time_start - <20><>ʱ<EFBFBD><CAB1>ʼʱ<CABC><CAB1>
|
||||
* time_now - <20><>ǰʱ<C7B0><CAB1>
|
||||
* time_out - <20><>ʱʱ<CAB1><CAB1>
|
||||
* <20><><EFBFBD><EFBFBD>: TIME_TRUE - <20>ѳ<EFBFBD>ʱ<EFBFBD><CAB1>TIME_FALSE - δ<><CEB4>ʱ
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>time_start<72><74>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>time_outʱ<74><CAB1><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
u8 app_timer_check_time_out(u16 time_start, u16 time_now, u16 time_out)
|
||||
{
|
||||
u16 timer_activate_val;
|
||||
|
||||
/* <20><><EFBFBD>㴥<EFBFBD><E3B4A5>ʱ<EFBFBD><CAB1> */
|
||||
timer_activate_val = time_out + time_start;
|
||||
|
||||
/* <20><><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if (timer_activate_val > time_start)
|
||||
{
|
||||
/* δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if ((time_now >= timer_activate_val) || (time_now < time_start))
|
||||
{
|
||||
return TIME_TRUE;
|
||||
}
|
||||
}
|
||||
else if ((time_now >= timer_activate_val) && (time_now < time_start))
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>ǰʱ<C7B0><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
return TIME_TRUE;
|
||||
}
|
||||
|
||||
return TIME_FALSE;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: app_timer_check_run_time
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
* <20><><EFBFBD><EFBFBD>: time_start - <20><>ʱ<EFBFBD><CAB1>ʼʱ<CABC><CAB1>
|
||||
* time_now - <20><>ǰʱ<C7B0><CAB1>
|
||||
* time_out - <20><>ʱʱ<CAB1><CAB1>
|
||||
* <20><><EFBFBD><EFBFBD>: ʣ<><CAA3>ʱ<EFBFBD>䣨<EFBFBD><E4A3A8><EFBFBD>룩
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>app_timer_check_time_out<75><74><EFBFBD><EFBFBD>ʹ<EFBFBD>ã<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>볬ʱ<EBB3AC><CAB1><EFBFBD>ж<EFBFBD><D0B6><EFBFBD>ʱ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD>˼<EFBFBD><CBBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
u16 app_timer_check_run_time(u16 time_start, u16 time_now, u16 time_out)
|
||||
{
|
||||
u16 timer_activate_val;
|
||||
|
||||
/* <20><><EFBFBD>㴥<EFBFBD><E3B4A5>ʱ<EFBFBD><CAB1> */
|
||||
timer_activate_val = time_out + time_start;
|
||||
|
||||
/* <20><><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if (timer_activate_val > time_start)
|
||||
{
|
||||
/* δ<><CEB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>Ӽ<EFBFBD><D3BC><EFBFBD>ʣ<EFBFBD><CAA3>ʱ<EFBFBD><CAB1> */
|
||||
return (timer_activate_val - time_now);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ʱ<EFBFBD><CAB1> */
|
||||
return (65535U - time_now + timer_activate_val);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: delay_ms
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ʱ
|
||||
* <20><><EFBFBD><EFBFBD>: delay - <20><>ʱʱ<CAB1>䣨<EFBFBD><E4A3A8><EFBFBD>룩
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: ʹ<><CAB9>HAL<41><4C><EFBFBD>ṩ<EFBFBD><E1B9A9><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ʱ
|
||||
*******************************************/
|
||||
void delay_ms(u16 delay)
|
||||
{
|
||||
HAL_Delay(delay);
|
||||
}
|
||||
48
calib_board/usr/app/app_timer.h
Normal file
48
calib_board/usr/app/app_timer.h
Normal file
@@ -0,0 +1,48 @@
|
||||
#ifndef _APP_TIMER_H_
|
||||
#define _APP_TIMER_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
/* ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD>غ궨<D8BA><EAB6A8> */
|
||||
#define TIME_TRUE 1U /* ʱ<><CAB1><EFBFBD>ѵ<EFBFBD> */
|
||||
#define TIME_FALSE 0U /* ʱ<><CAB1>δ<EFBFBD><CEB4> */
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: app_timer_class_t
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>嵥<EFBFBD><E5B5A5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>
|
||||
*******************************************/
|
||||
typedef struct
|
||||
{
|
||||
u8 run_flag; /* <20><><EFBFBD>ȱ<EFBFBD>־<EFBFBD><D6BE>1<EFBFBD><31><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u16 timer_count; /* ʱ<><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ֵ */
|
||||
u16 timer_reload; /* ʱ<><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ֵ */
|
||||
void (*task)(void); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
} app_timer_class_t;
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: app_timer_t
|
||||
* <20><><EFBFBD><EFBFBD>: Ӧ<>ö<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ķ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
typedef struct
|
||||
{
|
||||
u16 ms_tick; /* <20>δ<EFBFBD><CEB4><EFBFBD><EFBFBD>뼶<EFBFBD><EBBCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u16 s_tick; /* <20>δ<EFBFBD><CEB4>뼶<EFBFBD><EBBCB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u16 task_num; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
app_timer_class_t *p_timer_class; /* <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
|
||||
void (*init)(u8, app_timer_class_t *); /* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*task)(void); /* <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*increment_int)(u16); /* <20>жϵ<D0B6><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
} app_timer_t;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u8 app_timer_check_time_out(u16 time_start, u16 time_now, u16 time_out);
|
||||
u16 app_timer_check_run_time(u16 time_start, u16 time_now, u16 time_out);
|
||||
void delay_ms(u16 delay);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD> */
|
||||
extern app_timer_t app_timer;
|
||||
|
||||
#endif
|
||||
@@ -1,121 +0,0 @@
|
||||
#include "os_timer.h"
|
||||
|
||||
unsigned short osTime_MSecTick = 0; /*<2A>δ<EFBFBD>ʱ<EFBFBD><CAB1>*/
|
||||
unsigned short osTime_SecTick = 0;
|
||||
unsigned short osTime_10SecTick = 0; /*10s<30><73>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼*/
|
||||
|
||||
static unsigned short osTimer_MSec1 = 0;
|
||||
static unsigned short osTimer_MSec2 = 0;
|
||||
|
||||
unsigned short OsTimeTick_10ms;
|
||||
unsigned short OsTimeTick_50ms;
|
||||
unsigned short OsTimeTick_100ms;
|
||||
unsigned short OsTimeTick_200ms;
|
||||
unsigned short OsTimeTick_500ms;
|
||||
unsigned short OsTimeTick_1s;
|
||||
unsigned short OsTimeTick_2s;
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_Init
|
||||
* CALLED BY: Application
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: None
|
||||
* RETURN VALUES: None
|
||||
* DESCRIPTION: OsTimer initialization
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
void OsTimer_Init(void)
|
||||
{
|
||||
osTimer_MSec1 = 0;
|
||||
osTimer_MSec2 = 0;
|
||||
osTime_SecTick = 0;
|
||||
osTime_MSecTick = 0;
|
||||
|
||||
OsTimeTick_10ms = osTime_MSecTick;
|
||||
OsTimeTick_50ms = osTime_MSecTick;
|
||||
OsTimeTick_100ms = osTime_MSecTick;
|
||||
OsTimeTick_200ms = osTime_MSecTick;
|
||||
OsTimeTick_500ms = osTime_MSecTick;
|
||||
OsTimeTick_1s = osTime_MSecTick;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_Increment
|
||||
* CALLED BY: ISR
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: msec - millisecond to increase
|
||||
* RETURN VALUES: None
|
||||
* DESCRIPTION: Increase the Timer
|
||||
*
|
||||
****************************************************************************/
|
||||
void OsTimer_Increment(unsigned short msec)
|
||||
{
|
||||
osTime_MSecTick += msec;
|
||||
osTimer_MSec1 += msec;
|
||||
osTimer_MSec2 += msec;
|
||||
if (osTimer_MSec1 >= 1000U) /*1s*/
|
||||
{
|
||||
osTimer_MSec1 = 0U;
|
||||
osTime_SecTick++;
|
||||
}
|
||||
if (osTimer_MSec2 >= 10000U) /*10s*/
|
||||
{
|
||||
osTimer_MSec2 = 0U;
|
||||
osTime_10SecTick++;
|
||||
}
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
* NAME: OsTimer_CheckTimeOut
|
||||
* CALLED BY: Application
|
||||
* PRECONDITIONS:
|
||||
* INPUT PARAMETERS: timeStart - start tick
|
||||
* timeNow - current tick
|
||||
* timeOut - expired tick
|
||||
* RETURN VALUES: whether timer is expired
|
||||
* DESCRIPTION: check if specified time is expired
|
||||
*
|
||||
****************************************************************************/
|
||||
unsigned char OsTimer_CheckTimeOut(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut)
|
||||
{
|
||||
unsigned short timerActivateVal;
|
||||
timerActivateVal = timeOut + timeStart;
|
||||
|
||||
if (timerActivateVal > timeStart)
|
||||
{
|
||||
if ((timeNow >= timerActivateVal) || (timeNow < timeStart))
|
||||
{
|
||||
return TIME_TRUE;
|
||||
}
|
||||
}
|
||||
else if ((timeNow >= timerActivateVal) && (timeNow < timeStart))
|
||||
{
|
||||
return TIME_TRUE;
|
||||
}
|
||||
return TIME_FALSE;
|
||||
}
|
||||
|
||||
/*
|
||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>OsTimer_CheckTimeOut<75><74><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
|
||||
*/
|
||||
unsigned short OsTimer_CheckRunTime(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut)
|
||||
{
|
||||
unsigned short timerActivateVal;
|
||||
timerActivateVal = timeOut + timeStart;
|
||||
|
||||
if (timerActivateVal > timeStart)
|
||||
{
|
||||
return (timerActivateVal - timeNow);
|
||||
}
|
||||
else
|
||||
{
|
||||
return (65535U - timeNow + timerActivateVal);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD>ʱ*/
|
||||
void Delay_ms(unsigned short delay)
|
||||
{
|
||||
HAL_Delay(delay);
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
#ifndef _OSTIMER_H_
|
||||
#define _OSTIMER_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#define TIME_TRUE 1U
|
||||
#define TIME_FALSE 0U
|
||||
|
||||
|
||||
extern unsigned short osTime_MSecTick;
|
||||
extern unsigned short osTime_SecTick;
|
||||
extern unsigned short osTime_10SecTick; // 10s<30><73>һ<EFBFBD><D2BB> <20><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>¼
|
||||
|
||||
extern unsigned short OsTimeTick_10ms;
|
||||
extern unsigned short OsTimeTick_50ms;
|
||||
extern unsigned short OsTimeTick_100ms;
|
||||
extern unsigned short OsTimeTick_200ms;
|
||||
extern unsigned short OsTimeTick_500ms;
|
||||
extern unsigned short OsTimeTick_1s;
|
||||
extern unsigned short OsTimeTick_2s;
|
||||
|
||||
void OsTimer_Init(void);
|
||||
void OsTimer_Increment(unsigned short msec);
|
||||
unsigned char OsTimer_CheckTimeOut(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut);
|
||||
unsigned short OsTimer_CheckRunTime(unsigned short timeStart, unsigned short timeNow, unsigned short timeOut);
|
||||
|
||||
void Delay_ms(unsigned short delay);
|
||||
|
||||
#endif
|
||||
9
calib_board/usr/app/usr_config.h
Normal file
9
calib_board/usr/app/usr_config.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef _USR_CONFIG_H_
|
||||
#define _USR_CONFIG_H_
|
||||
|
||||
#define USR_TRUE (1U)
|
||||
#define USR_FALSE (0U)
|
||||
|
||||
#define USR_ENABLE (1U)
|
||||
#define USR_DISENABLE (0U)
|
||||
#endif
|
||||
@@ -1,5 +1,4 @@
|
||||
#include "bsp_74HC4067.h"
|
||||
#include "os_timer.h"
|
||||
|
||||
/*<2A><>Ƭ74HC4067<36><37>һƬTX һƬRX ÿƬ16ͨ<36><CDA8>*/
|
||||
|
||||
@@ -24,14 +23,14 @@
|
||||
#define BSP_LED_ON GPIO_PIN_RESET
|
||||
#define BSP_LED_OFF GPIO_PIN_SET
|
||||
|
||||
static GPIO_TypeDef* bsp_74HC4067_TX_SW_GPIO[4] = {TX_S0_GPIO_Port,TX_S1_GPIO_Port,TX_S2_GPIO_Port,TX_S3_GPIO_Port};
|
||||
static uint16_t bsp_74HC4067_TX_SW_Pin[4] = {TX_S0_Pin, TX_S1_Pin, TX_S2_Pin, TX_S3_Pin};
|
||||
//static GPIO_TypeDef* bsp_74HC4067_TX_SW_GPIO[4] = {TX_S0_GPIO_Port,TX_S1_GPIO_Port,TX_S2_GPIO_Port,TX_S3_GPIO_Port};
|
||||
//static uint16_t bsp_74HC4067_TX_SW_Pin[4] = {TX_S0_Pin, TX_S1_Pin, TX_S2_Pin, TX_S3_Pin};
|
||||
|
||||
static GPIO_TypeDef* bsp_74HC4067_RX_SW_GPIO[4] = {RX_S0_GPIO_Port,RX_S1_GPIO_Port,RX_S2_GPIO_Port,RX_S3_GPIO_Port};
|
||||
static uint16_t bsp_74HC4067_RX_SW_Pin[4] = {RX_S0_Pin, RX_S1_Pin, RX_S2_Pin, RX_S3_Pin};
|
||||
//static GPIO_TypeDef* bsp_74HC4067_RX_SW_GPIO[4] = {RX_S0_GPIO_Port,RX_S1_GPIO_Port,RX_S2_GPIO_Port,RX_S3_GPIO_Port};
|
||||
//static uint16_t bsp_74HC4067_RX_SW_Pin[4] = {RX_S0_Pin, RX_S1_Pin, RX_S2_Pin, RX_S3_Pin};
|
||||
|
||||
static GPIO_TypeDef* bsp_74HC4067_LED_CH_GPIO[BSP_74HC4067_CH_MAX] = {LED_CH1_GPIO_Port, LED_CH2_GPIO_Port, LED_CH3_GPIO_Port, LED_CH4_GPIO_Port, LED_CH5_GPIO_Port, LED_CH6_GPIO_Port, LED_CH7_GPIO_Port, LED_CH8_GPIO_Port, LED_CH9_GPIO_Port, LED_CH10_GPIO_Port, LED_CH11_GPIO_Port, LED_CH12_GPIO_Port, LED_CH13_GPIO_Port, LED_CH14_GPIO_Port, LED_CH15_GPIO_Port, LED_CH16_GPIO_Port};
|
||||
static uint16_t bsp_74HC4067_LED_CH_Pin[BSP_74HC4067_CH_MAX] = {LED_CH1_Pin, LED_CH2_Pin, LED_CH3_Pin, LED_CH4_Pin, LED_CH5_Pin, LED_CH6_Pin, LED_CH7_Pin, LED_CH8_Pin, LED_CH9_Pin, LED_CH10_Pin, LED_CH11_Pin, LED_CH12_Pin, LED_CH13_Pin, LED_CH14_Pin, LED_CH15_Pin, LED_CH16_Pin};
|
||||
//static GPIO_TypeDef* bsp_74HC4067_LED_CH_GPIO[BSP_74HC4067_CH_MAX] = {LED_CH1_GPIO_Port, LED_CH2_GPIO_Port, LED_CH3_GPIO_Port, LED_CH4_GPIO_Port, LED_CH5_GPIO_Port, LED_CH6_GPIO_Port, LED_CH7_GPIO_Port, LED_CH8_GPIO_Port, LED_CH9_GPIO_Port, LED_CH10_GPIO_Port, LED_CH11_GPIO_Port, LED_CH12_GPIO_Port, LED_CH13_GPIO_Port, LED_CH14_GPIO_Port, LED_CH15_GPIO_Port, LED_CH16_GPIO_Port};
|
||||
//static uint16_t bsp_74HC4067_LED_CH_Pin[BSP_74HC4067_CH_MAX] = {LED_CH1_Pin, LED_CH2_Pin, LED_CH3_Pin, LED_CH4_Pin, LED_CH5_Pin, LED_CH6_Pin, LED_CH7_Pin, LED_CH8_Pin, LED_CH9_Pin, LED_CH10_Pin, LED_CH11_Pin, LED_CH12_Pin, LED_CH13_Pin, LED_CH14_Pin, LED_CH15_Pin, LED_CH16_Pin};
|
||||
|
||||
/*ͨ<><CDA8>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>Ӳ<EFBFBD><D3B2>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>*/
|
||||
static u8 bsp_74HC4067_TX_CH_Conv[BSP_74HC4067_CH_MAX] = {13,14,15,12,11,10,9, 8, 7, 4, 3, 2, 1, 0, 6, 5};
|
||||
@@ -54,8 +53,8 @@ bsp_74HC4067_t UartCH_Config =
|
||||
static void bsp_74HC4067_Init(void)
|
||||
{
|
||||
bsp_74HC4067_CH = 0;
|
||||
TX_EN_ENABLE;
|
||||
RX_EN_ENABLE;
|
||||
// TX_EN_ENABLE;
|
||||
// RX_EN_ENABLE;
|
||||
bsp_74HC4067_Set_CH(0);
|
||||
}
|
||||
|
||||
@@ -77,19 +76,19 @@ static void bsp_74HC4067_Set_CH(u8 CH1)
|
||||
{
|
||||
if((TX_CH >> i) & 0x01)
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_TX_SW_GPIO[i],bsp_74HC4067_TX_SW_Pin[i],BSP_HIG);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_TX_SW_GPIO[i],bsp_74HC4067_TX_SW_Pin[i],BSP_HIG);
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_TX_SW_GPIO[i],bsp_74HC4067_TX_SW_Pin[i],BSP_LOW);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_TX_SW_GPIO[i],bsp_74HC4067_TX_SW_Pin[i],BSP_LOW);
|
||||
}
|
||||
if((RX_CH >> i) & 0x01)
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_RX_SW_GPIO[i],bsp_74HC4067_RX_SW_Pin[i],BSP_HIG);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_RX_SW_GPIO[i],bsp_74HC4067_RX_SW_Pin[i],BSP_HIG);
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_RX_SW_GPIO[i],bsp_74HC4067_RX_SW_Pin[i],BSP_LOW);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_RX_SW_GPIO[i],bsp_74HC4067_RX_SW_Pin[i],BSP_LOW);
|
||||
}
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧָʾ<D6B8><CABE>*/
|
||||
@@ -97,11 +96,11 @@ static void bsp_74HC4067_Set_CH(u8 CH1)
|
||||
{
|
||||
if(i == CH)
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_LED_CH_GPIO[i],bsp_74HC4067_LED_CH_Pin[i],BSP_LED_ON);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_LED_CH_GPIO[i],bsp_74HC4067_LED_CH_Pin[i],BSP_LED_ON);
|
||||
}
|
||||
else
|
||||
{
|
||||
HAL_GPIO_WritePin(bsp_74HC4067_LED_CH_GPIO[i],bsp_74HC4067_LED_CH_Pin[i],BSP_LED_OFF);
|
||||
// HAL_GPIO_WritePin(bsp_74HC4067_LED_CH_GPIO[i],bsp_74HC4067_LED_CH_Pin[i],BSP_LED_OFF);
|
||||
}
|
||||
}
|
||||
// HAL_Delay(20);
|
||||
|
||||
247
calib_board/usr/bsp/bsp_DS1302.c
Normal file
247
calib_board/usr/bsp/bsp_DS1302.c
Normal file
@@ -0,0 +1,247 @@
|
||||
#include "bsp_DS1302.h"
|
||||
|
||||
#define bsp_DS1302_DELAY() do{ \
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
}while(0)
|
||||
|
||||
#define RST_CLR HAL_GPIO_WritePin(DS1302_RST_GPIO_Port, DS1302_RST_Pin, GPIO_PIN_RESET )
|
||||
#define RST_SET HAL_GPIO_WritePin(DS1302_RST_GPIO_Port, DS1302_RST_Pin, GPIO_PIN_SET )
|
||||
|
||||
#define IO_CLR HAL_GPIO_WritePin(DS1302_DIO_GPIO_Port, DS1302_DIO_Pin, GPIO_PIN_RESET )
|
||||
#define IO_SET HAL_GPIO_WritePin(DS1302_DIO_GPIO_Port, DS1302_DIO_Pin, GPIO_PIN_SET )
|
||||
#define IO_READ HAL_GPIO_ReadPin (DS1302_DIO_GPIO_Port, DS1302_DIO_Pin )
|
||||
|
||||
#define SCK_CLR HAL_GPIO_WritePin(DS1302_CLK_GPIO_Port, DS1302_CLK_Pin, GPIO_PIN_RESET )
|
||||
#define SCK_SET HAL_GPIO_WritePin(DS1302_CLK_GPIO_Port, DS1302_CLK_Pin, GPIO_PIN_SET )
|
||||
|
||||
static void bsp_DS1302Init(void);
|
||||
static void bsp_DS1302_Task(void);
|
||||
static u8 bsp_DS1302_Set(bsp_DS1302_Time_t *pTime);
|
||||
|
||||
bsp_DS1302_t DS1302 =
|
||||
{
|
||||
.Init = bsp_DS1302Init,
|
||||
.Task = bsp_DS1302_Task,
|
||||
.Set = bsp_DS1302_Set,
|
||||
};
|
||||
|
||||
bsp_DS1302_t *pDS1302 = &DS1302;
|
||||
|
||||
static void bsp_DS1302DataInput(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct; //<2F><><EFBFBD><EFBFBD>GPIO<49>ṹ<EFBFBD><E1B9B9>
|
||||
|
||||
GPIO_InitStruct.Pin = DS1302_DIO_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(DS1302_DIO_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
|
||||
static void bsp_DS1302DataOutput(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct; //<2F><><EFBFBD><EFBFBD>GPIO<49>ṹ<EFBFBD><E1B9B9>
|
||||
|
||||
GPIO_InitStruct.Pin = DS1302_DIO_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(DS1302_DIO_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
|
||||
/*<2A><>bsp_DS1302д<32><D0B4>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void bsp_DS1302_write_byte(u8 Addr, u8 Data)
|
||||
{
|
||||
u8 i;
|
||||
RST_SET; /*<2A><><EFBFBD><EFBFBD>bsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
/*д<><D0B4>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>addr*/
|
||||
Addr = Addr & 0xFE;/*<2A><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>*/
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (Addr & 0x01)
|
||||
{
|
||||
IO_SET;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
IO_CLR;
|
||||
}
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Addr = Addr >> 1;
|
||||
}
|
||||
|
||||
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>d*/
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (Data & 0x01)
|
||||
{
|
||||
IO_SET;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
IO_CLR;
|
||||
}
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Data = Data >> 1;
|
||||
}
|
||||
|
||||
RST_CLR; /*ֹͣbsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
}
|
||||
|
||||
/*<2A><>bsp_DS1302<30><32><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static u8 bsp_DS1302_read_byte(u8 Addr)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
RST_SET; /*<2A><><EFBFBD><EFBFBD>bsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
|
||||
/*д<><D0B4>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>addr*/
|
||||
Addr = Addr | 0x01;/*<2A><><EFBFBD><EFBFBD>λ<EFBFBD>ø<EFBFBD>*/
|
||||
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
if (Addr & 0x01)
|
||||
{
|
||||
IO_SET;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
IO_CLR;
|
||||
}
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Addr = Addr >> 1;
|
||||
}
|
||||
|
||||
bsp_DS1302DataInput();
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>temp*/
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
temp = temp >> 1;
|
||||
|
||||
if (IO_READ)
|
||||
{
|
||||
temp |= 0x80;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
temp &= 0x7F;
|
||||
}
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
}
|
||||
|
||||
RST_CLR; /*ֹͣbsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
bsp_DS1302DataOutput();
|
||||
return temp;
|
||||
}
|
||||
|
||||
static u8 HexToBCD(u8 code)
|
||||
{
|
||||
u8 temp;
|
||||
temp = ((code / 10) << 4) + (code % 10);
|
||||
return temp;
|
||||
}
|
||||
|
||||
static u8 bsp_DS1302_Set(bsp_DS1302_Time_t *pTime)
|
||||
{
|
||||
if ((pDS1302->Time.Year > 99) || (pDS1302->Time.Month > 12) || (pDS1302->Time.Day > 31) ||
|
||||
(pDS1302->Time.Hour > 23) || (pDS1302->Time.Minute > 59) || (pDS1302->Time.Second > 59))
|
||||
{
|
||||
return USR_FALSE;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
bsp_DS1302_write_byte(BSP_DS1302_CONTROL_ADDR, 0x00); //<2F>ر<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
bsp_DS1302_write_byte(BSP_DS1302_SEC_ADDR, 0x80); //<2F><>ͣ
|
||||
|
||||
bsp_DS1302_write_byte(BSP_DS1302_YEAR_ADDR, HexToBCD(pTime->Year));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_MONTH_ADDR, HexToBCD(pTime->Month));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_DATA_ADDR, HexToBCD(pTime->Day));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_HOUR_ADDR, HexToBCD(pTime->Hour));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_MIN_ADDR, HexToBCD(pTime->Minute));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_SEC_ADDR, HexToBCD(pTime->Second));
|
||||
|
||||
bsp_DS1302_write_byte(BSP_DS1302_CONTROL_ADDR, 0x80); //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
return USR_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_DS1302_Task(void)
|
||||
{
|
||||
u8 RegData;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_YEAR_ADDR);
|
||||
pDS1302->Time.Year = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_MONTH_ADDR);
|
||||
pDS1302->Time.Month = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_DATA_ADDR);
|
||||
pDS1302->Time.Day = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_HOUR_ADDR);
|
||||
pDS1302->Time.Hour = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_MIN_ADDR);
|
||||
pDS1302->Time.Minute = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_SEC_ADDR);
|
||||
pDS1302->Time.Second = (RegData / 16) * 10 + RegData % 16;
|
||||
|
||||
}
|
||||
|
||||
static void bsp_DS1302Init(void)
|
||||
{
|
||||
RST_SET;
|
||||
SCK_CLR;
|
||||
bsp_DS1302_Task();
|
||||
|
||||
if ((pDS1302->Time.Year > 99) || (pDS1302->Time.Month > 12) || (pDS1302->Time.Day > 31) ||
|
||||
(pDS1302->Time.Hour > 23) || (pDS1302->Time.Minute > 59) || (pDS1302->Time.Second > 59))
|
||||
{
|
||||
pDS1302->Time.Year = 25;
|
||||
pDS1302->Time.Month = 1;
|
||||
pDS1302->Time.Day = 1;
|
||||
pDS1302->Time.Hour = 0;
|
||||
pDS1302->Time.Minute = 0;
|
||||
pDS1302->Time.Second = 0;
|
||||
bsp_DS1302_Set(&pDS1302->Time);
|
||||
}
|
||||
}
|
||||
206
calib_board/usr/bsp/bsp_DS1302.c.orig
Normal file
206
calib_board/usr/bsp/bsp_DS1302.c.orig
Normal file
@@ -0,0 +1,206 @@
|
||||
#include "bsp_DS1302.h"
|
||||
|
||||
#define bsp_DS1302_DELAY() do{ \
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
__NOP();__NOP();__NOP();__NOP();\
|
||||
}while(0)
|
||||
|
||||
|
||||
#define RST_CLR HAL_GPIO_WritePin(DS1302_RST_GPIO_Port, DS1302_RST_Pin, GPIO_PIN_RESET )
|
||||
#define RST_SET HAL_GPIO_WritePin(DS1302_RST_GPIO_Port, DS1302_RST_Pin, GPIO_PIN_SET )
|
||||
|
||||
#define IO_CLR HAL_GPIO_WritePin(DS1302_DIO_GPIO_Port, DS1302_DIO_Pin, GPIO_PIN_RESET )
|
||||
#define IO_SET HAL_GPIO_WritePin(DS1302_DIO_GPIO_Port, DS1302_DIO_Pin, GPIO_PIN_SET )
|
||||
#define IO_READ HAL_GPIO_ReadPin (DS1302_DIO_GPIO_Port, DS1302_DIO_Pin )
|
||||
|
||||
#define SCK_CLR HAL_GPIO_WritePin(DS1302_CLK_GPIO_Port, DS1302_CLK_Pin, GPIO_PIN_RESET )
|
||||
#define SCK_SET HAL_GPIO_WritePin(DS1302_CLK_GPIO_Port, DS1302_CLK_Pin, GPIO_PIN_SET )
|
||||
|
||||
static void bsp_DS1302Init(void);
|
||||
static void bsp_DS1302_Task(void);
|
||||
static void bsp_DS1302_Set(bsp_DS1302_Time_t *pTime);
|
||||
|
||||
|
||||
bsp_DS1302_t DS1302 =
|
||||
{
|
||||
.Init = bsp_DS1302Init,
|
||||
.Task = bsp_DS1302_Task,
|
||||
.Set = bsp_DS1302_Set,
|
||||
};
|
||||
|
||||
|
||||
bsp_DS1302_t *pDS1302 = &DS1302;
|
||||
|
||||
static void bsp_DS1302DataInput(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct; //<2F><><EFBFBD><EFBFBD>GPIO<49>ṹ<EFBFBD><E1B9B9>
|
||||
|
||||
GPIO_InitStruct.Pin = DS1302_DIO_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(DS1302_DIO_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
|
||||
static void bsp_DS1302DataOutput(void)
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStruct; //<2F><><EFBFBD><EFBFBD>GPIO<49>ṹ<EFBFBD><E1B9B9>
|
||||
|
||||
GPIO_InitStruct.Pin = DS1302_DIO_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_OD;
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
|
||||
HAL_GPIO_Init(DS1302_DIO_GPIO_Port, &GPIO_InitStruct);
|
||||
}
|
||||
|
||||
/*<2A><>bsp_DS1302д<32><D0B4>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void bsp_DS1302_write_byte(u8 Addr, u8 Data)
|
||||
{
|
||||
u8 i;
|
||||
RST_SET; /*<2A><><EFBFBD><EFBFBD>bsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
|
||||
bsp_DS1302_DELAY();
|
||||
/*д<><D0B4>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>addr*/
|
||||
Addr = Addr & 0xFE;/*<2A><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>*/
|
||||
for(i=0; i<8; i++){
|
||||
if(Addr&0x01) IO_SET;
|
||||
else IO_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Addr = Addr >> 1;
|
||||
}
|
||||
|
||||
/*д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>d*/
|
||||
for(i=0; i<8; i++){
|
||||
if(Data&0x01) IO_SET;
|
||||
else IO_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Data = Data >> 1;
|
||||
}
|
||||
RST_CLR; /*ֹͣbsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
}
|
||||
|
||||
/*<2A><>bsp_DS1302<30><32><EFBFBD><EFBFBD>һ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static u8 bsp_DS1302_read_byte(u8 Addr)
|
||||
{
|
||||
u8 i;
|
||||
u8 temp;
|
||||
RST_SET; /*<2A><><EFBFBD><EFBFBD>bsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
|
||||
/*д<><D0B4>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>addr*/
|
||||
Addr = Addr | 0x01;/*<2A><><EFBFBD><EFBFBD>λ<EFBFBD>ø<EFBFBD>*/
|
||||
for(i=0; i<8; i++)
|
||||
{
|
||||
if(Addr&0x01)
|
||||
{
|
||||
IO_SET;
|
||||
}
|
||||
else
|
||||
{
|
||||
IO_CLR;
|
||||
}
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
Addr = Addr >> 1;
|
||||
}
|
||||
|
||||
bsp_DS1302DataInput();
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>temp*/
|
||||
for(i=0; i<8; i++)
|
||||
{
|
||||
temp = temp>>1;
|
||||
if(IO_READ) temp |= 0x80;
|
||||
else temp&=0x7F;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_SET;
|
||||
bsp_DS1302_DELAY();
|
||||
SCK_CLR;
|
||||
bsp_DS1302_DELAY();
|
||||
}
|
||||
RST_CLR; /*ֹͣbsp_DS1302<30><32><EFBFBD><EFBFBD>*/
|
||||
bsp_DS1302_DELAY();
|
||||
bsp_DS1302DataOutput();
|
||||
return temp;
|
||||
}
|
||||
|
||||
static u8 HexToBCD(u8 code)
|
||||
{
|
||||
u8 temp;
|
||||
temp = ((code / 10)<<4)+(code % 10);
|
||||
return temp;
|
||||
}
|
||||
|
||||
static void bsp_DS1302_Set(bsp_DS1302_Time_t *pTime)
|
||||
{
|
||||
bsp_DS1302_write_byte(BSP_DS1302_CONTROL_ADDR,0x00); //<2F>ر<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
bsp_DS1302_write_byte(BSP_DS1302_SEC_ADDR,0x80); //<2F><>ͣ
|
||||
|
||||
bsp_DS1302_write_byte(BSP_DS1302_YEAR_ADDR, HexToBCD(pTime->Year));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_MONTH_ADDR, HexToBCD(pTime->Month));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_DATA_ADDR, HexToBCD(pTime->Day));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_HOUR_ADDR, HexToBCD(pTime->Hour));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_MIN_ADDR, HexToBCD(pTime->Minute));
|
||||
bsp_DS1302_write_byte(BSP_DS1302_SEC_ADDR, HexToBCD(pTime->Second));
|
||||
|
||||
bsp_DS1302_write_byte(BSP_DS1302_CONTROL_ADDR,0x80); //<2F><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
static void bsp_DS1302_Task(void)
|
||||
{
|
||||
u8 RegData;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_YEAR_ADDR);
|
||||
pDS1302->Time.Year = (RegData/16)*10 + RegData%16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_MONTH_ADDR);
|
||||
pDS1302->Time.Month = (RegData/16)*10 + RegData%16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_DATA_ADDR);
|
||||
pDS1302->Time.Day = (RegData/16)*10 + RegData%16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_HOUR_ADDR);
|
||||
pDS1302->Time.Hour = (RegData/16)*10 + RegData%16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_MIN_ADDR);
|
||||
pDS1302->Time.Minute = (RegData/16)*10 + RegData%16;
|
||||
|
||||
RegData = bsp_DS1302_read_byte(BSP_DS1302_SEC_ADDR);
|
||||
pDS1302->Time.Second = (RegData/16)*10 + RegData%16;
|
||||
|
||||
}
|
||||
|
||||
static void bsp_DS1302Init(void)
|
||||
{
|
||||
RST_SET;
|
||||
SCK_CLR;
|
||||
bsp_DS1302_Task();
|
||||
if((pDS1302->Time.Year>99)||(pDS1302->Time.Month>12)||(pDS1302->Time.Day>31)||
|
||||
(pDS1302->Time.Hour>23)||(pDS1302->Time.Minute>59)||(pDS1302->Time.Second>59))
|
||||
{
|
||||
pDS1302->Time.Year = 25;
|
||||
pDS1302->Time.Month = 1;
|
||||
pDS1302->Time.Day = 1;
|
||||
pDS1302->Time.Hour = 0;
|
||||
pDS1302->Time.Minute = 0;
|
||||
pDS1302->Time.Second = 0;
|
||||
bsp_DS1302_Set(&pDS1302->Time);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
38
calib_board/usr/bsp/bsp_DS1302.h
Normal file
38
calib_board/usr/bsp/bsp_DS1302.h
Normal file
@@ -0,0 +1,38 @@
|
||||
#ifndef __BSP_DS1302_H__
|
||||
#define __BSP_DS1302_H__
|
||||
|
||||
#include "main.h"
|
||||
#include "usr_config.h"
|
||||
|
||||
#define BSP_DS1302_SEC_ADDR 0x80 //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_MIN_ADDR 0x82 //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_HOUR_ADDR 0x84 //ʱ<><CAB1><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_DATA_ADDR 0x86 //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_MONTH_ADDR 0x88 //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_DAY_ADDR 0x8a //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_YEAR_ADDR 0x8c //<2F><><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_CONTROL_ADDR 0x8e //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ַ
|
||||
#define BSP_DS1302_CHARGER_ADDR 0x90
|
||||
#define BSP_DS1302_CLKBURST_ADDR 0xbe
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u16 Year;
|
||||
u8 Month;
|
||||
u8 Day;
|
||||
u8 Hour;
|
||||
u8 Minute;
|
||||
u8 Second;
|
||||
}bsp_DS1302_Time_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
bsp_DS1302_Time_t Time;
|
||||
void (*Init)(void);
|
||||
u8 (*Set)(bsp_DS1302_Time_t *);
|
||||
void (*Task)(void);
|
||||
}bsp_DS1302_t;
|
||||
|
||||
extern bsp_DS1302_t DS1302;//ϵͳʱ<CDB3><CAB1>
|
||||
|
||||
#endif
|
||||
@@ -1,38 +1,38 @@
|
||||
#include "bsp_Led.h"
|
||||
#include "os_timer.h"
|
||||
#include "app_timer.h"
|
||||
|
||||
#define LED1_ON HAL_GPIO_WritePin (LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
|
||||
#define LED1_OFF HAL_GPIO_WritePin (LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
|
||||
#define LED1_TOGGLE HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin)
|
||||
//#define LED1_ON HAL_GPIO_WritePin (LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET)
|
||||
//#define LED1_OFF HAL_GPIO_WritePin (LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET)
|
||||
//#define LED1_TOGGLE HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin)
|
||||
|
||||
#define LED2_ON HAL_GPIO_WritePin (LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
|
||||
#define LED2_OFF HAL_GPIO_WritePin (LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
|
||||
#define LED2_TOGGLE HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin)
|
||||
//#define LED2_ON HAL_GPIO_WritePin (LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET)
|
||||
//#define LED2_OFF HAL_GPIO_WritePin (LED2_GPIO_Port, LED2_Pin, GPIO_PIN_SET)
|
||||
//#define LED2_TOGGLE HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin)
|
||||
|
||||
#define LED3_ON HAL_GPIO_WritePin (LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET)
|
||||
#define LED3_OFF HAL_GPIO_WritePin (LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET)
|
||||
#define LED3_TOGGLE HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin)
|
||||
//#define LED3_ON HAL_GPIO_WritePin (LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET)
|
||||
//#define LED3_OFF HAL_GPIO_WritePin (LED3_GPIO_Port, LED3_Pin, GPIO_PIN_SET)
|
||||
//#define LED3_TOGGLE HAL_GPIO_TogglePin(LED3_GPIO_Port, LED3_Pin)
|
||||
|
||||
|
||||
static void bsp_Led_Init(void);
|
||||
static void bsp_Led_Flash(void);
|
||||
static void bsp_led_init(void);
|
||||
static void bsp_led_task(void);
|
||||
|
||||
bsp_Led_t Led =
|
||||
bsp_led_t led =
|
||||
{
|
||||
.Init = bsp_Led_Init,
|
||||
.Flash = bsp_Led_Flash,
|
||||
.init = bsp_led_init,
|
||||
.task = bsp_led_task,
|
||||
};
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˸<EFBFBD><CBB8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void bsp_Led_Init(void)
|
||||
static void bsp_led_init(void)
|
||||
{
|
||||
for(u8 i = 0;i < 20;i++)
|
||||
{
|
||||
Delay_ms(50);
|
||||
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
|
||||
delay_ms(50);
|
||||
// HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_Led_Flash(void)
|
||||
static void bsp_led_task(void)
|
||||
{
|
||||
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
|
||||
// HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void (*Init)(void);
|
||||
void (*Flash)(void);
|
||||
}bsp_Led_t;
|
||||
void (*init)(void);
|
||||
void (*task)(void);
|
||||
}bsp_led_t;
|
||||
|
||||
extern bsp_Led_t Led;
|
||||
extern bsp_led_t led;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,396 +0,0 @@
|
||||
#include "bsp_Uart.h"
|
||||
|
||||
#include "string.h"
|
||||
|
||||
//#define RS485_RX HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_RESET)
|
||||
#define RS485_RX HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_SET)
|
||||
#define RS485_TX HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_SET)
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD>*/
|
||||
#define RX_TEMP_BUFF_NUM (3000U)
|
||||
u8 Rx_Temp_Buff[RX_TEMP_BUFF_NUM];
|
||||
|
||||
#define UART1_TX_LEN (3000U)
|
||||
#define UART1_RX_LEN (3000U)
|
||||
|
||||
#define UART2_TX_LEN (3000U)
|
||||
#define UART2_RX_LEN (3000U)
|
||||
|
||||
#define UART4_TX_LEN (3000U)
|
||||
#define UART4_RX_LEN (3000U)
|
||||
|
||||
u8 Uart1_TX_Buff[UART1_TX_LEN];
|
||||
u8 Uart1_Rx_Buff[UART1_RX_LEN];
|
||||
|
||||
u8 Uart2_TX_Buff[UART2_TX_LEN];
|
||||
u8 Uart2_Rx_Buff[UART2_RX_LEN];
|
||||
|
||||
u8 Uart4_TX_Buff[UART4_TX_LEN];
|
||||
u8 Uart4_Rx_Buff[UART4_RX_LEN];
|
||||
|
||||
static void bsp_Uart_Init(bsp_Uart_t *p_Uart);
|
||||
static void bsp_Uart_Send(bsp_Uart_t *p_Uart,u8 *pData, u16 Len);
|
||||
static void bsp_Uart_Rx_IdleInt(bsp_Uart_t *p_Uart);
|
||||
static void bsp_Uart_Rx_TimeIncrement(bsp_Uart_t *p_Uart,u16 Time);
|
||||
static void bsp_Uart_Rx_Task(bsp_Uart_t *p_Uart);
|
||||
static void bsp_Uart_Rx_TimeStart(bsp_Uart_t *p_Uart);
|
||||
static void bsp_Uart_Tx_DMA_TCInt(bsp_Uart_t *p_Uart);
|
||||
|
||||
extern UART_HandleTypeDef huart1;
|
||||
extern UART_HandleTypeDef huart2;
|
||||
extern UART_HandleTypeDef huart4;
|
||||
|
||||
extern DMA_HandleTypeDef hdma_usart1_rx;
|
||||
extern DMA_HandleTypeDef hdma_usart1_tx;
|
||||
extern DMA_HandleTypeDef hdma_usart2_rx;
|
||||
extern DMA_HandleTypeDef hdma_usart2_tx;
|
||||
extern DMA_HandleTypeDef hdma_uart4_rx;
|
||||
extern DMA_HandleTypeDef hdma_uart4_tx;
|
||||
|
||||
bsp_Uart_t COM_Uart1 =
|
||||
{
|
||||
.RxQueue = queue(u8,UART1_RX_LEN),
|
||||
.Uart =&huart1,
|
||||
|
||||
.Tx_DMA = &hdma_usart1_tx,
|
||||
.Rx_DMA = &hdma_usart1_rx,
|
||||
|
||||
.Tx_DMA_Len = UART1_TX_LEN,
|
||||
.Rx_DMA_Len = UART1_RX_LEN,
|
||||
|
||||
.Tx_Addr = &Uart1_TX_Buff[0],
|
||||
.Rx_Addr = &Uart1_Rx_Buff[0],
|
||||
|
||||
.Tx_DMA_CompleteFlag = 1,
|
||||
.Rx_TimeOver = 0,
|
||||
|
||||
.relay.uart = NULL,
|
||||
|
||||
.Init = bsp_Uart_Init,
|
||||
.Send = bsp_Uart_Send,
|
||||
|
||||
.Tx_DMA_TCInt = bsp_Uart_Tx_DMA_TCInt,
|
||||
.Rx_IdleInt = bsp_Uart_Rx_IdleInt,
|
||||
.Rx_TimeIncrementInt = bsp_Uart_Rx_TimeIncrement,
|
||||
.Rx_DataAnalysis = NULL,
|
||||
.Rx_Task = bsp_Uart_Rx_Task,
|
||||
};
|
||||
|
||||
bsp_Uart_t COM_Uart2 =
|
||||
{
|
||||
.RxQueue = queue(u8,UART2_RX_LEN),
|
||||
.Uart =&huart2,
|
||||
|
||||
.Tx_DMA = &hdma_usart2_tx,
|
||||
.Rx_DMA = &hdma_usart2_rx,
|
||||
|
||||
.Tx_DMA_Len = UART2_TX_LEN,
|
||||
.Rx_DMA_Len = UART2_RX_LEN,
|
||||
|
||||
.Tx_Addr = &Uart2_TX_Buff[0],
|
||||
.Rx_Addr = &Uart2_Rx_Buff[0],
|
||||
|
||||
.Tx_DMA_CompleteFlag = 1,
|
||||
.Rx_TimeOver = 0,
|
||||
|
||||
.relay.uart = &COM_Uart4,
|
||||
|
||||
.Init = bsp_Uart_Init,
|
||||
.Send = bsp_Uart_Send,
|
||||
.Tx_DMA_TCInt = bsp_Uart_Tx_DMA_TCInt,
|
||||
.Rx_IdleInt = bsp_Uart_Rx_IdleInt,
|
||||
.Rx_TimeIncrementInt = bsp_Uart_Rx_TimeIncrement,
|
||||
.Rx_DataAnalysis = NULL,
|
||||
.Rx_Task = bsp_Uart_Rx_Task,
|
||||
};
|
||||
|
||||
bsp_Uart_t COM_Uart4 =
|
||||
{
|
||||
.RxQueue = queue(u8,UART4_RX_LEN),
|
||||
.Uart =&huart4,
|
||||
|
||||
.Tx_DMA = &hdma_uart4_tx,
|
||||
.Rx_DMA = &hdma_uart4_rx,
|
||||
|
||||
.Tx_DMA_Len = UART4_TX_LEN,
|
||||
.Rx_DMA_Len = UART4_RX_LEN,
|
||||
|
||||
.Tx_Addr = &Uart4_TX_Buff[0],
|
||||
.Rx_Addr = &Uart4_Rx_Buff[0],
|
||||
|
||||
.Tx_DMA_CompleteFlag = 1,
|
||||
.Rx_TimeOver = 0,
|
||||
|
||||
.relay.uart = NULL,
|
||||
|
||||
.Init = bsp_Uart_Init,
|
||||
.Send = bsp_Uart_Send,
|
||||
.Tx_DMA_TCInt = bsp_Uart_Tx_DMA_TCInt,
|
||||
.Rx_IdleInt = bsp_Uart_Rx_IdleInt,
|
||||
.Rx_TimeIncrementInt = bsp_Uart_Rx_TimeIncrement,
|
||||
.Rx_DataAnalysis = NULL,
|
||||
.Rx_Task = bsp_Uart_Rx_Task,
|
||||
};
|
||||
|
||||
|
||||
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void bsp_Uart_Init(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
//p_Uart->Rx_DataAnalysis = NULL;
|
||||
|
||||
/* <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ж<EFBFBD> */
|
||||
__HAL_UART_ENABLE_IT(p_Uart->Uart, UART_IT_IDLE);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> */
|
||||
//HAL_UART_Receive_DMA(p_Uart->Uart, p_Uart->Rx_Addr, p_Uart->Rx_DMA_Len);
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_Uart->Uart, p_Uart->Rx_Addr, p_Uart->Rx_DMA_Len);
|
||||
}
|
||||
|
||||
|
||||
static void bsp_Uart_DMASend(bsp_Uart_t *p_Uart,u8 *pData, u16 Len)
|
||||
{
|
||||
u32 tickstart,tick;
|
||||
p_Uart->Tx_DMA_CompleteFlag = 0;
|
||||
if(p_Uart->Tx_DMA_Len < Len)
|
||||
Len = p_Uart->Tx_DMA_Len;
|
||||
memcpy(p_Uart->Tx_Addr, pData, Len); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD>*/
|
||||
|
||||
// /*<2A><><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><CABD><EFBFBD>ͣ<EFBFBD><CDA3>ᵼ<EFBFBD><E1B5BC><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
// HAL_UART_Transmit(p_Uart->Uart,p_Uart->Tx_Addr,Len,500);
|
||||
|
||||
|
||||
HAL_UART_Transmit_DMA(p_Uart->Uart,p_Uart->Tx_Addr,Len);
|
||||
tickstart = HAL_GetTick();
|
||||
while( !p_Uart->Tx_DMA_CompleteFlag)
|
||||
{
|
||||
tick = HAL_GetTick();
|
||||
if((tick - tickstart) > 200) // 1000ms <20><>ʱ
|
||||
{
|
||||
p_Uart->Tx_DMA_CompleteFlag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void bsp_Uart_Send(bsp_Uart_t *p_Uart,u8 *pData, u16 Len)
|
||||
{
|
||||
u16 i,SendNum;
|
||||
|
||||
if(p_Uart == &COM_Uart4)
|
||||
RS485_TX;
|
||||
SendNum = Len / p_Uart->Tx_DMA_Len;
|
||||
for(i=0;i<SendNum;i++)
|
||||
{
|
||||
bsp_Uart_DMASend(p_Uart,&pData[p_Uart->Tx_DMA_Len * i], p_Uart->Tx_DMA_Len);
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
Len -= p_Uart->Tx_DMA_Len * i;
|
||||
if(0 == Len)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
else
|
||||
{
|
||||
bsp_Uart_DMASend(p_Uart,&pData[p_Uart->Tx_DMA_Len * i],Len);
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_Uart_Tx_DMA_TCInt(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
p_Uart->Tx_DMA_CompleteFlag = 1;
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD>н<EFBFBD><D0BD><EFBFBD><EFBFBD>ж<EFBFBD>*/
|
||||
static void bsp_Uart_Rx_IdleInt(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
u16 Rx_Length, i;
|
||||
/*ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>*/
|
||||
HAL_UART_DMAStop(p_Uart->Uart);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
||||
Rx_Length = p_Uart->Rx_DMA_Len - __HAL_DMA_GET_COUNTER(p_Uart->Rx_DMA);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD> */
|
||||
if (Rx_Length == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD> */
|
||||
for (i = 0; i < Rx_Length; i++)
|
||||
{
|
||||
queue_push_back(p_Uart->RxQueue, (void *)&p_Uart->Rx_Addr[i]);
|
||||
}
|
||||
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD> */
|
||||
bsp_Uart_Rx_TimeStart(p_Uart);
|
||||
// HAL_UART_Receive_DMA(p_Uart->Uart, p_Uart->Rx_Addr, p_Uart->Rx_DMA_Len);
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_Uart->Uart, p_Uart->Rx_Addr, p_Uart->Rx_DMA_Len);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*<2A>жϼ<D0B6><CFBC><EFBFBD>*/
|
||||
static void bsp_Uart_Rx_TimeIncrement(bsp_Uart_t *p_Uart,u16 Time)
|
||||
{
|
||||
/*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
|
||||
if(1 == p_Uart->Rx_StartFlag)
|
||||
{
|
||||
p_Uart->Rx_TimeCount += Time;
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>*/
|
||||
static void bsp_Uart_Rx_TimeStart(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
p_Uart->Rx_StartFlag = 1;
|
||||
p_Uart->Rx_TimeCount = 0;
|
||||
}
|
||||
|
||||
/*ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>*/
|
||||
static void bsp_Uart_Rx_TimeStop(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
p_Uart->Rx_StartFlag = 0;
|
||||
p_Uart->Rx_TimeCount = 0;
|
||||
}
|
||||
|
||||
static void bsp_Uart_Rx_Task(bsp_Uart_t *p_Uart)
|
||||
{
|
||||
/*<2A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD>յ<EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD>*/
|
||||
if(p_Uart->Rx_TimeOver < p_Uart->Rx_TimeCount)
|
||||
{
|
||||
p_Uart->Rx_Len = queue_size(p_Uart->RxQueue);
|
||||
/*ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD>*/
|
||||
bsp_Uart_Rx_TimeStop(p_Uart);
|
||||
if(p_Uart->Rx_Len <= p_Uart->Rx_DMA_Len && (0 != p_Uart->Rx_Len))
|
||||
{
|
||||
if(RX_TEMP_BUFF_NUM < p_Uart->Rx_Len)
|
||||
{
|
||||
queue_clear(p_Uart->RxQueue);
|
||||
}
|
||||
else
|
||||
{
|
||||
for(u16 i = 0;i < p_Uart->Rx_Len;i++)
|
||||
{
|
||||
queue_pop(p_Uart->RxQueue,&Rx_Temp_Buff[i]);
|
||||
}
|
||||
if(NULL != p_Uart->Rx_DataAnalysis)
|
||||
{
|
||||
p_Uart->Rx_DataAnalysis(Rx_Temp_Buff,p_Uart->Rx_Len,p_Uart); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
// p_Uart->Send(p_Uart,Rx_Temp_Buff,p_Uart->Rx_Len);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ORE
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
bsp_Uart_t *p_Uart = NULL;
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
p_Uart = &COM_Uart1;
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
p_Uart = &COM_Uart2;
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
p_Uart = &COM_Uart4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(huart->ErrorCode & HAL_UART_ERROR_NE)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
__HAL_UART_CLEAR_NEFLAG(huart);
|
||||
}
|
||||
if(huart->ErrorCode & HAL_UART_ERROR_FE)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
|
||||
__HAL_UART_CLEAR_FEFLAG(huart);
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) != RESET)
|
||||
{
|
||||
__HAL_UART_CLEAR_OREFLAG(huart); // <20><><EFBFBD><EFBFBD>ORE<52><45>־
|
||||
}
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_FE) != RESET)
|
||||
{
|
||||
__HAL_UART_CLEAR_FEFLAG(huart); // <20><><EFBFBD><EFBFBD>ORE<52><45>־
|
||||
}
|
||||
|
||||
//
|
||||
if(p_Uart != NULL)
|
||||
{
|
||||
// HAL_UART_DeInit(huart);
|
||||
// HAL_UART_Init(huart);
|
||||
// HAL_UART_DMAStop(p_Uart->Uart);
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_Uart->Uart, p_Uart->Rx_Addr, p_Uart->Rx_DMA_Len);
|
||||
}
|
||||
}
|
||||
|
||||
// ʵ<>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD>жϻص<CFBB>
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
{
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
bsp_Uart_Rx_IdleInt(&COM_Uart1);
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
bsp_Uart_Rx_IdleInt(&COM_Uart2);
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
bsp_Uart_Rx_IdleInt(&COM_Uart4);
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB><D8B5><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
// if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
|
||||
// {
|
||||
// __HAL_UART_CLEAR_IDLEFLAG(huart);
|
||||
|
||||
// if (huart->Instance == USART1)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart1);
|
||||
// }
|
||||
// else if (huart->Instance == USART2)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart2);
|
||||
// }
|
||||
// else if (huart->Instance == UART4)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart4);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
COM_Uart1.Tx_DMA_TCInt(&COM_Uart1);
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
COM_Uart2.Tx_DMA_TCInt(&COM_Uart2);
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
RS485_RX;
|
||||
COM_Uart4.Tx_DMA_TCInt(&COM_Uart4);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
#ifndef _BSP_UART_H_
|
||||
#define _BSP_UART_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "algo_Queue.h"
|
||||
|
||||
typedef struct bsp_Uart_t bsp_Uart_t;
|
||||
|
||||
|
||||
#define usart_type UART_HandleTypeDef
|
||||
#define dma_type DMA_HandleTypeDef
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
typedef struct
|
||||
{
|
||||
u8 flag; /*<2A><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>־λ*/
|
||||
bsp_Uart_t *uart; /*ת<><D7AA><EFBFBD><EFBFBD>ȥ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>*/
|
||||
u16 time_out; /*ת<><D7AA><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1>*/
|
||||
}bsp_uart_relay_t;
|
||||
|
||||
struct bsp_Uart_t
|
||||
{
|
||||
queue RxQueue; /*<2A><><EFBFBD>ݽ<EFBFBD><DDBD>ն<EFBFBD><D5B6><EFBFBD>*/
|
||||
usart_type *Uart; /*<2A><><EFBFBD><EFBFBD>*/
|
||||
|
||||
dma_type *Tx_DMA; /*DMA*/
|
||||
dma_type *Rx_DMA;
|
||||
|
||||
u8 Tx_DMA_CH;
|
||||
u8 Rx_DMA_CH;
|
||||
vu8 Tx_DMA_CompleteFlag; /*DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ*/
|
||||
|
||||
u8 *Tx_Addr; /*DMA<4D><41><EFBFBD>˻<EFBFBD><CBBB><EFBFBD>*/
|
||||
u8 *Rx_Addr;
|
||||
u16 Tx_DMA_Len;
|
||||
u16 Rx_DMA_Len;
|
||||
|
||||
u16 Rx_Len; /*<2A><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>*/
|
||||
u16 Rx_TimeCount; /*<2A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>*/
|
||||
u16 Rx_TimeOver; /*<2A><>ʱʱ<CAB1><CAB1>*/
|
||||
u8 Rx_StartFlag; /*<2A><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ*/
|
||||
|
||||
|
||||
bsp_uart_relay_t relay; /*<2A><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>*/
|
||||
void (*Init)(bsp_Uart_t *); /*<2A><>ʼ<EFBFBD><CABC>*/
|
||||
void (*Send)(bsp_Uart_t *,u8 *,u16); /*<2A><><EFBFBD>ڷ<EFBFBD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>*/
|
||||
|
||||
void (*Tx_DMA_TCInt)(bsp_Uart_t *); /*DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
|
||||
|
||||
void (*Rx_IdleInt)(bsp_Uart_t *); /*<2A><><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>*/
|
||||
void (*Rx_TimeIncrementInt)(bsp_Uart_t *,u16); /*<2A>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
void (*Rx_DataAnalysis)(u8 *,u16,void *); /*<2A><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>*/
|
||||
void (*Rx_Task)(bsp_Uart_t *); /*<2A><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
};
|
||||
|
||||
extern bsp_Uart_t COM_Uart1;
|
||||
extern bsp_Uart_t COM_Uart2;
|
||||
extern bsp_Uart_t COM_Uart4;
|
||||
#endif
|
||||
808
calib_board/usr/bsp/bsp_W5500.c
Normal file
808
calib_board/usr/bsp/bsp_W5500.c
Normal file
@@ -0,0 +1,808 @@
|
||||
/**********************************************************************************
|
||||
* <20>ļ<EFBFBD><C4BC><EFBFBD> <20><>W5500.c
|
||||
* <20><><EFBFBD><EFBFBD> <20><>W5500 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD>汾 <20><>ST_v3.5
|
||||
* <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>ģ<EFBFBD>鿪<EFBFBD><E9BFAA><EFBFBD>Ŷ<EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> <20><>http://nirenelec.blog.163.com
|
||||
* <20>Ա<EFBFBD> <20><>http://nirenelec.taobao.com
|
||||
**********************************************************************************/
|
||||
|
||||
//#include "stm32f1xx.h"
|
||||
//#include "stm32f1xx_hal_spi.h"
|
||||
#include "main.h"
|
||||
|
||||
#include "bsp_W5500.h"
|
||||
#include "usart.h"
|
||||
#include "stdio.h"
|
||||
#include "spi.h"
|
||||
//#include "bsp_print.h"
|
||||
|
||||
|
||||
#define BSP_W5500_SPI_CS_LOW
|
||||
|
||||
|
||||
/*Run_Mode <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>ģʽ*/
|
||||
#define BSP_W5500_PORT_RUN_MODE_TCP_SERVER 0x00 /*TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ*/
|
||||
#define BSP_W5500_PORT_RUN_MODE_TCP_CLIENT 0x01 /*TCP<43>ͻ<EFBFBD><CDBB><EFBFBD>ģʽ*/
|
||||
#define BSP_W5500_PORT_RUN_MODE_UDP 0x02 /*UDP(<28>㲥)ģʽ*/
|
||||
|
||||
/*Run_State <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>״̬ BITλ*/
|
||||
#define BSP_W5500_PORT_RUN_STATE_INIT 0x01 /*<2A>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><CABC>*/
|
||||
#define BSP_W5500_PORT_RUN_STATE_CONN 0x02 /*<2A>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
/*TR_Data_State <20>˿ڵ<CBBF><DAB5>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>״̬*/
|
||||
#define BSP_W5500_PORT_DATA_RECEIVE 0x01 /*<2A>˿ڽ<CBBF><DABD>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>*/
|
||||
#define BSP_W5500_PORT_DATA_TRANSMITOK 0x02 /*<2A>˿ڷ<CBBF><DAB7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
static void bsp_W5500_Interrupt_Process(void);
|
||||
static void bsp_W5500_Init(void);
|
||||
static void bsp_W5500_Task(void);
|
||||
static void Write_SOCK_Data_Buffer(bsp_W5500_Class_t *pW5500_Class, u8 *dat_ptr, u16 size);
|
||||
|
||||
bsp_W5500_t W5500 =
|
||||
{
|
||||
.Gateway_IP = {192,168,1,1},
|
||||
.Sub_Mask = {255,255,255,0},
|
||||
.Phy_Addr = {0x0c,0x29,0xab,0x7c,0x00,0x01},
|
||||
|
||||
//.IP_Addr = {169,254,107,101},
|
||||
.IP_Addr = {192,168,1,101},
|
||||
|
||||
.Interrupt_Process = bsp_W5500_Interrupt_Process,
|
||||
|
||||
.Init = bsp_W5500_Init,
|
||||
.Task = bsp_W5500_Task,
|
||||
.Socket_Send = Write_SOCK_Data_Buffer,
|
||||
|
||||
.W5500_Class[0] =
|
||||
{
|
||||
.SocketPort = 0, /*ʹ<>ö˿<C3B6>0*/
|
||||
.ConfigData.Gateway_IP = {192,168,1,1},
|
||||
.ConfigData.Sub_Mask = {255,255,255,0},
|
||||
.ConfigData.Phy_Addr = {0x0c,0x29,0xab,0x7c,0x00,0x01},
|
||||
|
||||
.ConfigData.IP_Addr = {192,168,1,101},
|
||||
.ConfigData.Port = {0x13,0x88},
|
||||
|
||||
// .ConfigData.DIP = {192,168,1,32},
|
||||
// .ConfigData.DPort = {0x03,0x09},
|
||||
|
||||
.Run_Mode = BSP_W5500_PORT_RUN_MODE_TCP_SERVER,
|
||||
// .Rx_DataAnalysis = proto_HSMS_Rx_DataAnalysis,
|
||||
},
|
||||
};
|
||||
|
||||
bsp_W5500_t *pW5500 = &W5500;
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : SPI1_Send_Byte
|
||||
* <20><><EFBFBD><EFBFBD> : SPI1<49><31><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : dat:<3A><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void SPI1_Send_Byte(u8 dat)
|
||||
{
|
||||
// hspi1.Instance->DR=dat;
|
||||
HAL_SPI_Transmit(&hspi1, &dat, 1, 0xff);
|
||||
// while(__HAL_SPI_GET_FLAG(&hspi1,SPI_FLAG_TXE)==RESET);
|
||||
// SPI_I2S_SendData(SPI1,dat);//д1<D0B4><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);//<2F>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>ݼĴ<DDBC><C4B4><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : SPI1_Send_Short
|
||||
* <20><><EFBFBD><EFBFBD> : SPI1<49><31><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(16λ)
|
||||
* <20><><EFBFBD><EFBFBD> : dat:<3A><><EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void SPI1_Send_Short(u16 dat)
|
||||
{
|
||||
SPI1_Send_Byte(dat >> 8); // д<><D0B4><EFBFBD>ݸ<EFBFBD>λ
|
||||
SPI1_Send_Byte(dat); // д<><D0B4><EFBFBD>ݵ<EFBFBD>λ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_1Byte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>д1<D0B4><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,dat:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_1Byte(u16 reg, u8 dat)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM1 | RWB_WRITE | COMMON_R); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,1<><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1>ͨ<EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
||||
SPI1_Send_Byte(dat); // д1<D0B4><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_2Byte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>д2<D0B4><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,dat:16λ<36><CEBB>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(2<><32><EFBFBD>ֽ<EFBFBD>)
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_2Byte(u16 reg, u16 dat)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM2 | RWB_WRITE | COMMON_R); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,2<><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1>ͨ<EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
||||
SPI1_Send_Short(dat); // д16λ<36><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_nByte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>дn<D0B4><6E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,*dat_ptr:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,size:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_nByte(u16 reg, u8 *dat_ptr, u16 size)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(VDM | RWB_WRITE | COMMON_R); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,N<><4E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1>ͨ<EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
||||
|
||||
for (i = 0; i < size; i++) // ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>size<7A><65><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>W5500
|
||||
{
|
||||
SPI1_Send_Byte(*dat_ptr++); // дһ<D0B4><D2BB><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_SOCK_1Byte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD>˿ڼĴ<DABC><C4B4><EFBFBD>д1<D0B4><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,dat:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_SOCK_1Byte(SOCKET s, u16 reg, u8 dat)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM1 | RWB_WRITE | (s * 0x20 + 0x08)); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,1<><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
SPI1_Send_Byte(dat); // д1<D0B4><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_SOCK_2Byte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD>˿ڼĴ<DABC><C4B4><EFBFBD>д2<D0B4><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,dat:16λ<36><CEBB>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(2<><32><EFBFBD>ֽ<EFBFBD>)
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_SOCK_2Byte(SOCKET s, u16 reg, u16 dat)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM2 | RWB_WRITE | (s * 0x20 + 0x08)); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,2<><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
SPI1_Send_Short(dat); // д16λ<36><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_W5500_SOCK_4Byte
|
||||
* <20><><EFBFBD><EFBFBD> : ͨ<><CDA8>SPI1<49><31>ָ<EFBFBD><D6B8><EFBFBD>˿ڼĴ<DABC><C4B4><EFBFBD>д4<D0B4><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ,*dat_ptr:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>ֽڻ<D6BD><DABB><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
void Write_W5500_SOCK_4Byte(SOCKET s, u16 reg, u8 *dat_ptr)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM4 | RWB_WRITE | (s * 0x20 + 0x08)); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,4<><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>3<EFBFBD><33><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>4<EFBFBD><34><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Read_W5500_1Byte
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>W5500ָ<30><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
u8 Read_W5500_1Byte(u16 reg)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM1 | RWB_READ | COMMON_R); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,1<><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1>ͨ<EFBFBD>üĴ<C3BC><C4B4><EFBFBD>
|
||||
i = hspi1.Instance->DR;
|
||||
// HAL_SPI_Receive(&hspi1,&i,1,0xf);
|
||||
// i=SPI_I2S_ReceiveData(SPI1);
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
i = hspi1.Instance->DR;
|
||||
// HAL_SPI_Receive(&hspi1,&i,1,0xf);
|
||||
|
||||
// i=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ1<C8A1><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
return i; // <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Read_W5500_SOCK_1Byte
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>W5500ָ<30><D6B8><EFBFBD>˿ڼĴ<DABC><C4B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
u8 Read_W5500_SOCK_1Byte(SOCKET s, u16 reg)
|
||||
{
|
||||
u8 i;
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM1 | RWB_READ | (s * 0x20 + 0x08)); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,1<><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
|
||||
i = hspi1.Instance->DR;
|
||||
// i=SPI_I2S_ReceiveData(SPI1);
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
i = hspi1.Instance->DR;
|
||||
// i=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ1<C8A1><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
return i; // <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Read_W5500_SOCK_2Byte
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>W5500ָ<30><D6B8><EFBFBD>˿ڼĴ<DABC><C4B4><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,reg:16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>ȡ<EFBFBD><C8A1><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>2<EFBFBD><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>(16λ)
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
u16 Read_W5500_SOCK_2Byte(SOCKET s, u16 reg)
|
||||
{
|
||||
u16 i;
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(reg); // ͨ<><CDA8>SPI1д16λ<36>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
SPI1_Send_Byte(FDM2 | RWB_READ | (s * 0x20 + 0x08)); // ͨ<><CDA8>SPI1д<31><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,2<><32><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
|
||||
i = hspi1.Instance->DR;
|
||||
// i=SPI_I2S_ReceiveData(SPI1);
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
i = hspi1.Instance->DR;
|
||||
// i=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
i *= 256;
|
||||
i += hspi1.Instance->DR;
|
||||
// i+=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ<EFBFBD><C8A1>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
return i; // <20><><EFBFBD>ض<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Read_SOCK_Data_Buffer
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>W5500<30><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,*dat_ptr:<3A><><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,rx_size<7A><65><EFBFBD>ֽ<EFBFBD>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
u16 Read_SOCK_Data_Buffer(SOCKET s, u8 *dat_ptr)
|
||||
{
|
||||
u16 rx_size;
|
||||
u16 offset, offset1;
|
||||
u16 i;
|
||||
u8 j;
|
||||
|
||||
rx_size = Read_W5500_SOCK_2Byte(s, Sn_RX_RSR);
|
||||
if (rx_size == 0)
|
||||
return 0; // û<><C3BB><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if (rx_size > 1460)
|
||||
rx_size = 1460;
|
||||
|
||||
offset = Read_W5500_SOCK_2Byte(s, Sn_RX_RD);
|
||||
offset1 = offset;
|
||||
offset &= (S_RX_SIZE - 1); // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(offset); // д16λ<36><CEBB>ַ
|
||||
SPI1_Send_Byte(VDM | RWB_READ | (s * 0x20 + 0x18)); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,N<><4E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
j = hspi1.Instance->DR;
|
||||
// j=SPI_I2S_ReceiveData(SPI1);
|
||||
|
||||
if ((offset + rx_size) < S_RX_SIZE) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַδ<D6B7><CEB4><EFBFBD><EFBFBD>W5500<30><30><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
{
|
||||
for (i = 0; i < rx_size; i++) // ѭ<><D1AD><EFBFBD><EFBFBD>ȡrx_size<7A><65><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
j = hspi1.Instance->DR;
|
||||
// j=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ1<C8A1><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*dat_ptr = j; // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽<EFBFBD><E6B5BD><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>
|
||||
dat_ptr++; // <20><><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>1
|
||||
}
|
||||
}
|
||||
else // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>W5500<30><30><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
{
|
||||
offset = S_RX_SIZE - offset;
|
||||
for (i = 0; i < offset; i++) // ѭ<><D1AD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>ǰoffset<65><74><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
j = hspi1.Instance->DR;
|
||||
// j=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ1<C8A1><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*dat_ptr = j; // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽<EFBFBD><E6B5BD><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>
|
||||
dat_ptr++; // <20><><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>1
|
||||
}
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(0x00); // д16λ<36><CEBB>ַ
|
||||
SPI1_Send_Byte(VDM | RWB_READ | (s * 0x20 + 0x18)); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,N<><4E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
j = hspi1.Instance->DR;
|
||||
// j=SPI_I2S_ReceiveData(SPI1);
|
||||
|
||||
for (; i < rx_size; i++) // ѭ<><D1AD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1>rx_size-offset<65><74><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(0x00); // <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
j = hspi1.Instance->DR;
|
||||
// j=SPI_I2S_ReceiveData(SPI1);//<2F><>ȡ1<C8A1><31><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*dat_ptr = j; // <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݱ<EFBFBD><DDB1>浽<EFBFBD><E6B5BD><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>
|
||||
dat_ptr++; // <20><><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>1
|
||||
}
|
||||
}
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
offset1 += rx_size; // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ,<2C><><EFBFBD>´ζ<C2B4>ȡ<EFBFBD><C8A1><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
||||
Write_W5500_SOCK_2Byte(s, Sn_RX_RD, offset1);
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, RECV); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
return rx_size; // <20><><EFBFBD>ؽ<EFBFBD><D8BD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
||||
}
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Write_SOCK_Data_Buffer
|
||||
* <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>W5500<30><30><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A>˿ں<CBBF>,*dat_ptr:<3A><><EFBFBD>ݱ<EFBFBD><DDB1>滺<EFBFBD><E6BBBA><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>,size:<3A><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݵij<DDB5><C4B3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
static void Write_SOCK_Data_Buffer(bsp_W5500_Class_t *pW5500_Class, u8 *dat_ptr, u16 size)
|
||||
{
|
||||
u16 offset, offset1;
|
||||
u16 i;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDPģʽ,<2C><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49>Ͷ˿ں<CBBF>
|
||||
if ((Read_W5500_SOCK_1Byte(pW5500_Class->SocketPort, Sn_MR) & 0x0f) != SOCK_UDP) // <20><><EFBFBD><EFBFBD>Socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_4Byte(pW5500_Class->SocketPort, Sn_DIPR, pW5500_Class->ConfigData.UDP_DIPR); // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP
|
||||
Write_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_DPORTR, pW5500_Class->ConfigData.UDP_DPORT[0]<<8 | pW5500_Class->ConfigData.UDP_DPORT[1]); // <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
||||
}
|
||||
|
||||
offset = Read_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_TX_WR);
|
||||
offset1 = offset;
|
||||
offset &= (S_TX_SIZE - 1); // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(offset); // д16λ<36><CEBB>ַ
|
||||
SPI1_Send_Byte(VDM | RWB_WRITE | (pW5500_Class->SocketPort * 0x20 + 0x10)); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,N<><4E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
|
||||
if ((offset + size) < S_TX_SIZE) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַδ<D6B7><CEB4><EFBFBD><EFBFBD>W5500<30><30><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
{
|
||||
for (i = 0; i < size; i++) // ѭ<><D1AD>д<EFBFBD><D0B4>size<7A><65><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>һ<EFBFBD><D2BB><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
else // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>W5500<30><30><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
{
|
||||
offset = S_TX_SIZE - offset;
|
||||
for (i = 0; i < offset; i++) // ѭ<><D1AD>д<EFBFBD><D0B4>ǰoffset<65><74><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>һ<EFBFBD><D2BB><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_RESET); // <20><>W5500<30><30>SCSΪ<53>͵<EFBFBD>ƽ
|
||||
|
||||
SPI1_Send_Short(0x00); // д16λ<36><CEBB>ַ
|
||||
SPI1_Send_Byte(VDM | RWB_WRITE | (pW5500_Class->SocketPort * 0x20 + 0x10)); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>,N<><4E><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>,д<><D0B4><EFBFBD><EFBFBD>,ѡ<><D1A1><EFBFBD>˿<EFBFBD>s<EFBFBD>ļĴ<C4BC><C4B4><EFBFBD>
|
||||
|
||||
for (; i < size; i++) // ѭ<><D1AD>д<EFBFBD><D0B4>size-offset<65><74><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
SPI1_Send_Byte(*dat_ptr++); // д<><D0B4>һ<EFBFBD><D2BB><EFBFBD>ֽڵ<D6BD><DAB5><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
}
|
||||
HAL_GPIO_WritePin(W5500_SCS_PORT, W5500_SCS, GPIO_PIN_SET); // <20><>W5500<30><30>SCSΪ<53>ߵ<EFBFBD>ƽ
|
||||
|
||||
offset1 += size; // <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ,<2C><><EFBFBD>´<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
||||
Write_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_TX_WR, offset1);
|
||||
Write_W5500_SOCK_1Byte(pW5500_Class->SocketPort, Sn_CR, SEND); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : W5500_Hardware_Reset
|
||||
* <20><><EFBFBD><EFBFBD> : Ӳ<><D3B2><EFBFBD><EFBFBD>λW5500
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : W5500<30>ĸ<EFBFBD>λ<EFBFBD><CEBB><EFBFBD>ű<EFBFBD><C5B1>ֵ͵<D6B5>ƽ<EFBFBD><C6BD><EFBFBD><EFBFBD>500us<75><73><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΧW5500
|
||||
*******************************************************************************/
|
||||
void W5500_Hardware_Reset(void)
|
||||
{
|
||||
HAL_GPIO_WritePin(W5500_RST_PORT, W5500_RST, GPIO_PIN_RESET); // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
HAL_Delay(50);
|
||||
HAL_GPIO_WritePin(W5500_RST_PORT, W5500_RST, GPIO_PIN_SET); // <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
HAL_Delay(100);
|
||||
|
||||
// while((Read_W5500_1Byte(PHYCFGR)&LINK)==0);//<2F>ȴ<EFBFBD><C8B4><EFBFBD>̫<EFBFBD><CCAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : W5500_Init
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>ʼ<EFBFBD><CABC>W5500<30>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>ʹ<EFBFBD><CAB9>W5500֮ǰ<D6AE><C7B0><EFBFBD>ȶ<EFBFBD>W5500<30><30>ʼ<EFBFBD><CABC>
|
||||
*******************************************************************************/
|
||||
void W5500_Init(void)
|
||||
{
|
||||
u16 i = 0;
|
||||
|
||||
Write_W5500_1Byte(MR, RST); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λW5500,<2C><>1<EFBFBD><31>Ч,<2C><>λ<EFBFBD><CEBB><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD>0
|
||||
|
||||
HAL_Delay(10); // <20><>ʱ10ms,<2C>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD><C3BA><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(Gateway)<29><>IP<49><50>ַ,Gateway_IPΪ4<CEAA>ֽ<EFBFBD>u8<75><38><EFBFBD><EFBFBD>,<2C>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF><EFBFBD>ʹͨ<CAB9><CDA8>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE>ޣ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><D8BF>Է<EFBFBD><D4B7>ʵ<EFBFBD><CAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Internet
|
||||
Write_W5500_nByte(GAR, pW5500->Gateway_IP, 4);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(MASK)ֵ,SUB_MASKΪ4<CEAA>ֽ<EFBFBD>u8<75><38><EFBFBD><EFBFBD>,<2C>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
Write_W5500_nByte(SUBR, pW5500->Sub_Mask, 4);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ,PHY_ADDRΪ6<CEAA>ֽ<EFBFBD>u8<75><38><EFBFBD><EFBFBD>,<2C>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ψһ<CEA8><D2BB>ʶ<EFBFBD><CAB6><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵַ
|
||||
// <20>õ<EFBFBD>ֵַ<D6B7><D6B5>Ҫ<EFBFBD><D2AA>IEEE<45><45><EFBFBD>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD>OUI<55>Ĺ涨<C4B9><E6B6A8>ǰ3<C7B0><33><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>̴<EFBFBD><CCB4>룬<EFBFBD><EBA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>Ϊ<EFBFBD><CEAA>Ʒ<EFBFBD><C6B7><EFBFBD><EFBFBD>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>ע<EFBFBD><D7A2><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ֽڱ<D6BD><DAB1><EFBFBD>Ϊż<CEAA><C5BC>
|
||||
Write_W5500_nByte(SHAR, pW5500->Phy_Addr, 6);
|
||||
|
||||
// <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ,IP_ADDRΪ4<CEAA>ֽ<EFBFBD>u8<75><38><EFBFBD><EFBFBD>,<2C>Լ<EFBFBD><D4BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
// ע<>⣬<EFBFBD><E2A3AC><EFBFBD><EFBFBD>IP<49><50><EFBFBD><EFBFBD><EFBFBD>뱾<EFBFBD><EBB1BE>IP<49><50><EFBFBD><EFBFBD>ͬһ<CDAC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2B1BEBB><EFBFBD><EFBFBD><EFBFBD><DEB7>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
Write_W5500_nByte(SIPR, pW5500->IP_Addr, 4);
|
||||
|
||||
// <20><><EFBFBD>÷<EFBFBD><C3B7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><CDBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD>ο<EFBFBD>W5500<30><30><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD>
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(i, Sn_RXBUF_SIZE, 0x02); // Socket Rx memory size=2k
|
||||
Write_W5500_SOCK_1Byte(i, Sn_TXBUF_SIZE, 0x02); // Socket Tx mempry size=2k
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䣬Ĭ<E4A3AC><C4AC>Ϊ2000(200ms)
|
||||
// ÿһ<C3BF><D2BB>λ<EFBFBD><CEBB>ֵΪ100<30><CEA2>,<2C><>ʼ<EFBFBD><CABC>ʱֵ<CAB1><D6B5>Ϊ2000(0x07D0),<2C><><EFBFBD><EFBFBD>200<30><30><EFBFBD><EFBFBD>
|
||||
Write_W5500_2Byte(RTR, 0x07d0);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>Ϊ8<CEAA><38>
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨ֵ,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>ж<EFBFBD>(<28><><EFBFBD>صĶ˿<C4B6><CBBF>жϼĴ<CFBC><C4B4><EFBFBD><EFBFBD>е<EFBFBD>Sn_IR <20><>ʱλ(TIMEOUT)<29>á<EFBFBD>1<EFBFBD><31>)
|
||||
Write_W5500_1Byte(RCR, 8);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Detect_Gateway
|
||||
* <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE(0xFF),ʧ<>ܷ<EFBFBD><DCB7><EFBFBD>FALSE(0x00)
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
u8 Detect_Gateway(void)
|
||||
{
|
||||
u8 ip_adde[4];
|
||||
ip_adde[0] = pW5500->IP_Addr[0] + 1;
|
||||
ip_adde[1] = pW5500->IP_Addr[1] + 1;
|
||||
ip_adde[2] = pW5500->IP_Addr[2] + 1;
|
||||
ip_adde[3] = pW5500->IP_Addr[3] + 1;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
||||
Write_W5500_SOCK_4Byte(0, Sn_DIPR, ip_adde); // <20><>Ŀ<EFBFBD>ĵ<EFBFBD>ַ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>д<EFBFBD><D0B4><EFBFBD>뱾<EFBFBD><EBB1BE>IP<49><50>ͬ<EFBFBD><CDAC>IPֵ
|
||||
Write_W5500_SOCK_1Byte(0, Sn_MR, MR_TCP); // <20><><EFBFBD><EFBFBD>socketΪTCPģʽ
|
||||
Write_W5500_SOCK_1Byte(0, Sn_CR, OPEN); // <20><><EFBFBD><EFBFBD>Socket
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
|
||||
if (Read_W5500_SOCK_1Byte(0, Sn_SR) != SOCK_INIT) // <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(0, Sn_CR, CLOSE); // <20><EFBFBD><F2BFAAB2>ɹ<EFBFBD>,<2C>ر<EFBFBD>Socket
|
||||
return FALSE; // <20><><EFBFBD><EFBFBD>FALSE(0x00)
|
||||
}
|
||||
|
||||
Write_W5500_SOCK_1Byte(0, Sn_CR, CONNECT); // <20><><EFBFBD><EFBFBD>SocketΪConnectģʽ
|
||||
|
||||
do
|
||||
{
|
||||
u16 j = 0;
|
||||
j = Read_W5500_SOCK_1Byte(0, Sn_IR); // <20><>ȡSocket0<74>жϱ<D0B6>־<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
if (j != 0)
|
||||
Write_W5500_SOCK_1Byte(0, Sn_IR, j);
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
if ((j & IR_TIMEOUT) == IR_TIMEOUT)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
else if (Read_W5500_SOCK_1Byte(0, Sn_DHAR) != 0xff)
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(0, Sn_CR, CLOSE); // <20>ر<EFBFBD>Socket
|
||||
return TRUE;
|
||||
}
|
||||
} while (1);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Socket_Init
|
||||
* <20><><EFBFBD><EFBFBD> : ָ<><D6B8>Socket(0~7)<29><>ʼ<EFBFBD><CABC>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A><><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD>Ķ˿<C4B6>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
static void bsp_W5500_Socket_Init(bsp_W5500_Class_t *pW5500_Class)
|
||||
{
|
||||
Write_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_MSSR, 1460); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>=1460(0x5b4)
|
||||
Write_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_PORT, pW5500_Class->ConfigData.Port[0]<<8 | pW5500_Class->ConfigData.Port[1]);
|
||||
// <20><><EFBFBD>ö˿<C3B6>0Ŀ<30><C4BF>(Զ<><D4B6>)<29>˿ں<CBBF>
|
||||
Write_W5500_SOCK_2Byte(pW5500_Class->SocketPort, Sn_DPORTR, pW5500_Class->ConfigData.DPort[0]<<8 | pW5500_Class->ConfigData.DPort[1]);
|
||||
// <20><><EFBFBD>ö˿<C3B6>0Ŀ<30><C4BF>(Զ<><D4B6>)IP<49><50>ַ
|
||||
Write_W5500_SOCK_4Byte(pW5500_Class->SocketPort, Sn_DIPR, pW5500_Class->ConfigData.DIP);
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Socket_Connect
|
||||
* <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)Ϊ<>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A><><EFBFBD>趨<EFBFBD>Ķ˿<C4B6>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE(0xFF),ʧ<>ܷ<EFBFBD><DCB7><EFBFBD>FALSE(0x00)
|
||||
* ˵<><CBB5> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Socket<65><74><EFBFBD><EFBFBD><EFBFBD>ڿͻ<DABF><CDBB><EFBFBD>ģʽʱ,<2C><><EFBFBD>øó<C3B8><C3B3><EFBFBD>,<2C><>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӻ<EFBFBD><D3BA><EFBFBD><EFBFBD>ֳ<EFBFBD>ʱ<EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>,<2C><>Ҫ<EFBFBD><D2AA><EFBFBD>µ<EFBFBD><C2B5>øó<C3B8><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************************************************/
|
||||
u8 Socket_Connect(SOCKET s)
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_MR, MR_TCP); // <20><><EFBFBD><EFBFBD>socketΪTCPģʽ
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, OPEN); // <20><><EFBFBD><EFBFBD>Socket
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
if (Read_W5500_SOCK_1Byte(s, Sn_SR) != SOCK_INIT) // <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, CLOSE); // <20><EFBFBD><F2BFAAB2>ɹ<EFBFBD>,<2C>ر<EFBFBD>Socket
|
||||
return FALSE; // <20><><EFBFBD><EFBFBD>FALSE(0x00)
|
||||
}
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, CONNECT); // <20><><EFBFBD><EFBFBD>SocketΪConnectģʽ
|
||||
return TRUE; // <20><><EFBFBD><EFBFBD>TRUE,<2C><><EFBFBD>óɹ<C3B3>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Socket_Listen
|
||||
* <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)<29><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A><><EFBFBD>趨<EFBFBD>Ķ˿<C4B6>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE(0xFF),ʧ<>ܷ<EFBFBD><DCB7><EFBFBD>FALSE(0x00)
|
||||
* ˵<><CBB5> : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Socket<65><74><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD>ģʽʱ,<2C><><EFBFBD>øó<C3B8><C3B3><EFBFBD>,<2C>ȵ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>,<2C><>ʹW5500<30><30><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
*******************************************************************************/
|
||||
u8 Socket_Listen(SOCKET s)
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_MR, MR_TCP); // <20><><EFBFBD><EFBFBD>socketΪTCPģʽ
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, OPEN); // <20><><EFBFBD><EFBFBD>Socket
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
if (Read_W5500_SOCK_1Byte(s, Sn_SR) != SOCK_INIT) // <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, CLOSE); // <20><EFBFBD><F2BFAAB2>ɹ<EFBFBD>,<2C>ر<EFBFBD>Socket
|
||||
return FALSE; // <20><><EFBFBD><EFBFBD>FALSE(0x00)
|
||||
}
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, LISTEN); // <20><><EFBFBD><EFBFBD>SocketΪ<74><CEAA><EFBFBD><EFBFBD>ģʽ
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
if (Read_W5500_SOCK_1Byte(s, Sn_SR) != SOCK_LISTEN) // <20><><EFBFBD><EFBFBD>socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, CLOSE); // <20><><EFBFBD>ò<EFBFBD><C3B2>ɹ<EFBFBD>,<2C>ر<EFBFBD>Socket
|
||||
return FALSE; // <20><><EFBFBD><EFBFBD>FALSE(0x00)
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Socket<65>Ĵ<C4B4><F2BFAABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Զ<EFBFBD>̿ͻ<CCBF><CDBB><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>Ҫ<EFBFBD>ȴ<EFBFBD>Socket<65>жϣ<D0B6>
|
||||
// <20><><EFBFBD>ж<EFBFBD>Socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD>ο<EFBFBD>W5500<30><30><EFBFBD><EFBFBD><EFBFBD>ֲ<EFBFBD><D6B2><EFBFBD>Socket<65>ж<EFBFBD>״̬
|
||||
// <20>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF>IP<49><50>Ŀ<EFBFBD>Ķ˿ں<CBBF>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : Socket_UDP
|
||||
* <20><><EFBFBD><EFBFBD> : <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)ΪUDPģʽ
|
||||
* <20><><EFBFBD><EFBFBD> : s:<3A><><EFBFBD>趨<EFBFBD>Ķ˿<C4B6>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>TRUE(0xFF),ʧ<>ܷ<EFBFBD><DCB7><EFBFBD>FALSE(0x00)
|
||||
* ˵<><CBB5> : <20><><EFBFBD><EFBFBD>Socket<65><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UDPģʽ,<2C><><EFBFBD>øó<C3B8><C3B3><EFBFBD>,<2C><>UDPģʽ<C4A3><CABD>,Socketͨ<74>Ų<EFBFBD><C5B2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20>ó<EFBFBD><C3B3><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>һ<EFBFBD>Σ<EFBFBD><CEA3><EFBFBD>ʹW5500<30><30><EFBFBD><EFBFBD>ΪUDPģʽ
|
||||
*******************************************************************************/
|
||||
u8 Socket_UDP(SOCKET s)
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_MR, MR_UDP); // <20><><EFBFBD><EFBFBD>SocketΪUDPģʽ*/
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, OPEN); // <20><><EFBFBD><EFBFBD>Socket*/
|
||||
HAL_Delay(5); // <20><>ʱ5ms
|
||||
if (Read_W5500_SOCK_1Byte(s, Sn_SR) != SOCK_UDP) // <20><><EFBFBD><EFBFBD>Socket<65><74><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(s, Sn_CR, CLOSE); // <20><EFBFBD><F2BFAAB2>ɹ<EFBFBD>,<2C>ر<EFBFBD>Socket
|
||||
return FALSE; // <20><><EFBFBD><EFBFBD>FALSE(0x00)
|
||||
}
|
||||
else
|
||||
return TRUE;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Socket<65>Ĵ<C4B4>UDPģʽ<C4A3><CABD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
// <20><>ΪSocket<65><74><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ڷ<EFBFBD><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>Ŀ<EFBFBD><C4BF>Socket<65>Ķ˿ں<CBBF>
|
||||
// <20><><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>Ŀ<EFBFBD><C4BF>Socket<65>Ķ˿ں<CBBF><DABA>ǹ̶<C7B9><CCB6><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD>иı<D0B8>,<2C><>ôҲ<C3B4><D2B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
|
||||
/*******************************************************************************
|
||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> : W5500_Interrupt_Process
|
||||
* <20><><EFBFBD><EFBFBD> : W5500<30>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD> : <20><>
|
||||
* <20><><EFBFBD><EFBFBD>ֵ : <20><>
|
||||
* ˵<><CBB5> : <20><>
|
||||
*******************************************************************************/
|
||||
static void bsp_W5500_Interrupt_Process(void)
|
||||
{
|
||||
u8 i, j;
|
||||
u8 Int_Flag,Socket_Flag;
|
||||
|
||||
IntDispose:
|
||||
|
||||
Int_Flag = Read_W5500_1Byte(SIR); // <20><>ȡ<EFBFBD>˿<EFBFBD><CBBF>жϱ<D0B6>־<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
HAL_Delay(10);
|
||||
for(i=0;i<BSP_W5500_PORT_NUM;i++)
|
||||
{
|
||||
if(Int_Flag & (0x01 << i))
|
||||
{
|
||||
Socket_Flag = Read_W5500_SOCK_1Byte(pW5500->W5500_Class[i].SocketPort, Sn_IR); // <20><>ȡSocket0<74>жϱ<D0B6>־<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>
|
||||
Write_W5500_SOCK_1Byte(pW5500->W5500_Class[i].SocketPort, Sn_IR, Socket_Flag);
|
||||
if (Socket_Flag & IR_CON) // <20><>TCPģʽ<C4A3><CABD>,Socket0<74>ɹ<EFBFBD><C9B9><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
pW5500->W5500_Class[i].Run_State |= BSP_W5500_PORT_RUN_STATE_CONN; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬0x02,<2C>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><D3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
if (Socket_Flag & IR_DISCON) // <20><>TCPģʽ<C4A3><CABD>Socket<65>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD>Ӵ<EFBFBD><D3B4><EFBFBD>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(pW5500->W5500_Class[i].SocketPort, Sn_CR, CLOSE); // <20>رն˿<D5B6>,<2C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
bsp_W5500_Socket_Init(&pW5500->W5500_Class[i]); // ָ<><D6B8>Socket(0~7)<29><>ʼ<EFBFBD><CABC>,<2C><>ʼ<EFBFBD><CABC><EFBFBD>˿<EFBFBD>0
|
||||
pW5500->W5500_Class[i].Run_State = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬0x00,<2C>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
}
|
||||
if (Socket_Flag & IR_SEND_OK) // Socket0<74><30><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>ٴ<EFBFBD><D9B4><EFBFBD><EFBFBD><EFBFBD>S_tx_process()<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
pW5500->W5500_Class[i].TR_Data_State |= BSP_W5500_PORT_DATA_TRANSMITOK; // <20>˿ڷ<CBBF><DAB7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
}
|
||||
if (Socket_Flag & IR_RECV) // Socket<65><74><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S_rx_process()<29><><EFBFBD><EFBFBD>
|
||||
{
|
||||
pW5500->W5500_Class[i].TR_Data_State |= BSP_W5500_PORT_DATA_RECEIVE; // <20>˿ڽ<CBBF><DABD>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
}
|
||||
if (Socket_Flag & IR_TIMEOUT) // Socket<65><74><EFBFBD>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4>䳬ʱ<E4B3AC><CAB1><EFBFBD><EFBFBD>
|
||||
{
|
||||
Write_W5500_SOCK_1Byte(pW5500->W5500_Class[i].SocketPort, Sn_CR, CLOSE); // <20>رն˿<D5B6>,<2C>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD>´<EFBFBD><C2B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
pW5500->W5500_Class[i].TR_Data_State = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬0x00,<2C>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (Read_W5500_1Byte(SIR) != 0)
|
||||
goto IntDispose;
|
||||
}
|
||||
|
||||
|
||||
void bsp_W5500_Socket_Set(bsp_W5500_Class_t *pW5500_Class)
|
||||
{
|
||||
if (0 == pW5500_Class->Run_State)
|
||||
{
|
||||
switch(pW5500_Class->Run_Mode)
|
||||
{
|
||||
/*TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ*/
|
||||
case BSP_W5500_PORT_RUN_MODE_TCP_SERVER:
|
||||
{
|
||||
if (Socket_Listen(pW5500_Class->SocketPort) == TRUE)
|
||||
pW5500_Class->Run_State = BSP_W5500_PORT_RUN_STATE_INIT;
|
||||
else
|
||||
pW5500_Class->Run_State = 0;
|
||||
}break;
|
||||
/*TCP<43>ͻ<EFBFBD><CDBB><EFBFBD>ģʽ*/
|
||||
case BSP_W5500_PORT_RUN_MODE_TCP_CLIENT:
|
||||
{
|
||||
if(Socket_Connect(pW5500_Class->SocketPort)==TRUE)
|
||||
pW5500_Class->Run_State = BSP_W5500_PORT_RUN_STATE_INIT;
|
||||
else
|
||||
pW5500_Class->Run_State = 0;
|
||||
}break;
|
||||
/*UDPģʽ*/
|
||||
case BSP_W5500_PORT_RUN_MODE_UDP:
|
||||
{
|
||||
if(Socket_UDP(pW5500_Class->SocketPort)==TRUE)
|
||||
pW5500_Class->Run_State = BSP_W5500_PORT_RUN_STATE_INIT | BSP_W5500_PORT_RUN_STATE_CONN;
|
||||
else
|
||||
pW5500_Class->Run_State = 0;
|
||||
}break;
|
||||
default:break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_W5500_Init()
|
||||
{
|
||||
u8 i;
|
||||
W5500_Hardware_Reset(); /*Ӳ<><D3B2><EFBFBD><EFBFBD>λW5500*/
|
||||
W5500_Init(); /*<2A><>ʼ<EFBFBD><CABC>W5500<30>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
Detect_Gateway(); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
for(i=0;i<BSP_W5500_PORT_NUM;i++)
|
||||
{
|
||||
bsp_W5500_Socket_Init(&pW5500->W5500_Class[i]);
|
||||
pW5500->W5500_Class[i].Run_State = 0; /*<2A><>λ״̬*/
|
||||
//bsp_W5500_Socket_Set(&pW5500->W5500_Class[i]); /*W5500<30>˿ڳ<CBBF>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
}
|
||||
|
||||
static void bsp_W5500_Task(void)
|
||||
{
|
||||
u8 i;
|
||||
for(i=0;i<BSP_W5500_PORT_NUM;i++)
|
||||
{
|
||||
bsp_W5500_Socket_Set(&pW5500->W5500_Class[i]); /*W5500<30>˿ڳ<CBBF>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
bsp_W5500_Interrupt_Process(); // W5500<30>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
for(i=0;i<BSP_W5500_PORT_NUM;i++)
|
||||
{
|
||||
if ((pW5500->W5500_Class[i].TR_Data_State & BSP_W5500_PORT_DATA_RECEIVE) == BSP_W5500_PORT_DATA_RECEIVE) // <20><><EFBFBD><EFBFBD>Socket0<74><30><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
{
|
||||
pW5500->W5500_Class[i].TR_Data_State &= ~BSP_W5500_PORT_DATA_RECEIVE;
|
||||
u16 Len = Read_SOCK_Data_Buffer(0, pW5500->W5500_Class[i].Rx_Buffer);
|
||||
// Write_SOCK_Data_Buffer(&pW5500->W5500_Class[i], pW5500->W5500_Class[i].Rx_Buffer, Len);
|
||||
// printf("RX");
|
||||
// Debug_UartSend(pW5500->W5500_Class[i].Rx_Buffer, Len);
|
||||
if(pW5500->W5500_Class[i].Rx_DataAnalysis != NULL)
|
||||
{
|
||||
pW5500->W5500_Class[i].Rx_DataAnalysis(&pW5500->W5500_Class[i],pW5500->W5500_Class[i].Rx_Buffer,Len);/*<2A><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD>*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
322
calib_board/usr/bsp/bsp_W5500.h
Normal file
322
calib_board/usr/bsp/bsp_W5500.h
Normal file
@@ -0,0 +1,322 @@
|
||||
#ifndef _W5500_H_
|
||||
#define _W5500_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
/***************** Common Register *****************/
|
||||
#define MR 0x0000
|
||||
#define RST 0x80
|
||||
#define WOL 0x20
|
||||
#define PB 0x10
|
||||
#define PPP 0x08
|
||||
#define FARP 0x02
|
||||
|
||||
#define GAR 0x0001
|
||||
#define SUBR 0x0005
|
||||
#define SHAR 0x0009
|
||||
#define SIPR 0x000f
|
||||
|
||||
#define INTLEVEL 0x0013
|
||||
#define IR 0x0015
|
||||
#define CONFLICT 0x80
|
||||
#define UNREACH 0x40
|
||||
#define PPPOE 0x20
|
||||
#define MP 0x10
|
||||
|
||||
#define IMR 0x0016
|
||||
#define IM_IR7 0x80
|
||||
#define IM_IR6 0x40
|
||||
#define IM_IR5 0x20
|
||||
#define IM_IR4 0x10
|
||||
|
||||
#define SIR 0x0017
|
||||
#define S7_INT 0x80
|
||||
#define S6_INT 0x40
|
||||
#define S5_INT 0x20
|
||||
#define S4_INT 0x10
|
||||
#define S3_INT 0x08
|
||||
#define S2_INT 0x04
|
||||
#define S1_INT 0x02
|
||||
#define S0_INT 0x01
|
||||
|
||||
#define SIMR 0x0018
|
||||
#define S7_IMR 0x80
|
||||
#define S6_IMR 0x40
|
||||
#define S5_IMR 0x20
|
||||
#define S4_IMR 0x10
|
||||
#define S3_IMR 0x08
|
||||
#define S2_IMR 0x04
|
||||
#define S1_IMR 0x02
|
||||
#define S0_IMR 0x01
|
||||
|
||||
#define RTR 0x0019
|
||||
#define RCR 0x001b
|
||||
|
||||
#define PTIMER 0x001c
|
||||
#define PMAGIC 0x001d
|
||||
#define PHA 0x001e
|
||||
#define PSID 0x0024
|
||||
#define PMRU 0x0026
|
||||
|
||||
#define UIPR 0x0028
|
||||
#define UPORT 0x002c
|
||||
|
||||
#define PHYCFGR 0x002e
|
||||
#define RST_PHY 0x80
|
||||
#define OPMODE 0x40
|
||||
#define DPX 0x04
|
||||
#define SPD 0x02
|
||||
#define LINK 0x01
|
||||
|
||||
#define VERR 0x0039
|
||||
|
||||
/********************* Socket Register *******************/
|
||||
#define Sn_MR 0x0000
|
||||
#define MULTI_MFEN 0x80
|
||||
#define BCASTB 0x40
|
||||
#define ND_MC_MMB 0x20
|
||||
#define UCASTB_MIP6B 0x10
|
||||
#define MR_CLOSE 0x00
|
||||
#define MR_TCP 0x01
|
||||
#define MR_UDP 0x02
|
||||
#define MR_MACRAW 0x04
|
||||
|
||||
#define Sn_CR 0x0001
|
||||
#define OPEN 0x01
|
||||
#define LISTEN 0x02
|
||||
#define CONNECT 0x04
|
||||
#define DISCON 0x08
|
||||
#define CLOSE 0x10
|
||||
#define SEND 0x20
|
||||
#define SEND_MAC 0x21
|
||||
#define SEND_KEEP 0x22
|
||||
#define RECV 0x40
|
||||
|
||||
#define Sn_IR 0x0002
|
||||
#define IR_SEND_OK 0x10
|
||||
#define IR_TIMEOUT 0x08
|
||||
#define IR_RECV 0x04
|
||||
#define IR_DISCON 0x02
|
||||
#define IR_CON 0x01
|
||||
|
||||
#define Sn_SR 0x0003
|
||||
#define SOCK_CLOSED 0x00
|
||||
#define SOCK_INIT 0x13
|
||||
#define SOCK_LISTEN 0x14
|
||||
#define SOCK_ESTABLISHED 0x17
|
||||
#define SOCK_CLOSE_WAIT 0x1c
|
||||
#define SOCK_UDP 0x22
|
||||
#define SOCK_MACRAW 0x02
|
||||
|
||||
#define SOCK_SYNSEND 0x15
|
||||
#define SOCK_SYNRECV 0x16
|
||||
#define SOCK_FIN_WAI 0x18
|
||||
#define SOCK_CLOSING 0x1a
|
||||
#define SOCK_TIME_WAIT 0x1b
|
||||
#define SOCK_LAST_ACK 0x1d
|
||||
|
||||
#define Sn_PORT 0x0004
|
||||
#define Sn_DHAR 0x0006
|
||||
#define Sn_DIPR 0x000c
|
||||
#define Sn_DPORTR 0x0010
|
||||
|
||||
#define Sn_MSSR 0x0012
|
||||
#define Sn_TOS 0x0015
|
||||
#define Sn_TTL 0x0016
|
||||
|
||||
#define Sn_RXBUF_SIZE 0x001e
|
||||
#define Sn_TXBUF_SIZE 0x001f
|
||||
#define Sn_TX_FSR 0x0020
|
||||
#define Sn_TX_RD 0x0022
|
||||
#define Sn_TX_WR 0x0024
|
||||
#define Sn_RX_RSR 0x0026
|
||||
#define Sn_RX_RD 0x0028
|
||||
#define Sn_RX_WR 0x002a
|
||||
|
||||
#define Sn_IMR 0x002c
|
||||
#define IMR_SENDOK 0x10
|
||||
#define IMR_TIMEOUT 0x08
|
||||
#define IMR_RECV 0x04
|
||||
#define IMR_DISCON 0x02
|
||||
#define IMR_CON 0x01
|
||||
|
||||
#define Sn_FRAG 0x002d
|
||||
#define Sn_KPALVTR 0x002f
|
||||
|
||||
/*******************************************************************/
|
||||
/************************ SPI Control Byte *************************/
|
||||
/*******************************************************************/
|
||||
/* Operation mode bits */
|
||||
#define VDM 0x00
|
||||
#define FDM1 0x01
|
||||
#define FDM2 0x02
|
||||
#define FDM4 0x03
|
||||
|
||||
/* Read_Write control bit */
|
||||
#define RWB_READ 0x00
|
||||
#define RWB_WRITE 0x04
|
||||
|
||||
/* Block select bits */
|
||||
#define COMMON_R 0x00
|
||||
|
||||
/* Socket 0 */
|
||||
#define S0_REG 0x08
|
||||
#define S0_TX_BUF 0x10
|
||||
#define S0_RX_BUF 0x18
|
||||
|
||||
/* Socket 1 */
|
||||
#define S1_REG 0x28
|
||||
#define S1_TX_BUF 0x30
|
||||
#define S1_RX_BUF 0x38
|
||||
|
||||
/* Socket 2 */
|
||||
#define S2_REG 0x48
|
||||
#define S2_TX_BUF 0x50
|
||||
#define S2_RX_BUF 0x58
|
||||
|
||||
/* Socket 3 */
|
||||
#define S3_REG 0x68
|
||||
#define S3_TX_BUF 0x70
|
||||
#define S3_RX_BUF 0x78
|
||||
|
||||
/* Socket 4 */
|
||||
#define S4_REG 0x88
|
||||
#define S4_TX_BUF 0x90
|
||||
|
||||
/* Socket 5 */
|
||||
#define S5_REG 0xa8
|
||||
#define S5_TX_BUF 0xb0
|
||||
#define S5_RX_BUF 0xb8
|
||||
|
||||
/* Socket 6 */
|
||||
#define S6_REG 0xc8
|
||||
#define S6_TX_BUF 0xd0
|
||||
#define S6_RX_BUF 0xd8
|
||||
|
||||
/* Socket 7 */
|
||||
#define S7_REG 0xe8
|
||||
#define S7_TX_BUF 0xf0
|
||||
#define S7_RX_BUF 0xf8
|
||||
|
||||
#define TRUE 0xff
|
||||
#define FALSE 0x00
|
||||
|
||||
#define S_RX_SIZE 2048 /*<2A><><EFBFBD><EFBFBD>Socket<65><74><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>W5500_RMSR<53><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define S_TX_SIZE 2048 /*<2A><><EFBFBD><EFBFBD>Socket<65><74><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>Ը<EFBFBD><D4B8><EFBFBD>W5500_TMSR<53><52><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
/***************----- W5500 GPIO<49><4F><EFBFBD><EFBFBD> -----***************/
|
||||
#define W5500_SCS GPIO_PIN_0 // <20><><EFBFBD><EFBFBD>W5500<30><30>CS<43><53><EFBFBD><EFBFBD>
|
||||
#define W5500_SCS_PORT GPIOB
|
||||
|
||||
#define W5500_RST GPIO_PIN_4 // <20><><EFBFBD><EFBFBD>W5500<30><30>RST<53><54><EFBFBD><EFBFBD>
|
||||
#define W5500_RST_PORT GPIOA
|
||||
|
||||
#define W5500_INT GPIO_PIN_1 // <20><><EFBFBD><EFBFBD>W5500<30><30>INT<4E><54><EFBFBD><EFBFBD>
|
||||
#define W5500_INT_PORT GPIOA
|
||||
|
||||
///***************----- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -----***************/
|
||||
//extern u8 Gateway_IP[4]; // <20><><EFBFBD><EFBFBD>IP<49><50>ַ
|
||||
//extern u8 Sub_Mask[4]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern u8 Phy_Addr[6]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(MAC)
|
||||
//extern u8 IP_Addr[4]; // <20><><EFBFBD><EFBFBD>IP<49><50>ַ
|
||||
|
||||
//extern u8 S0_Port[2]; // <20>˿<EFBFBD>0<EFBFBD>Ķ˿ں<CBBF>(5000)
|
||||
//extern u8 S0_DIP[4]; // <20>˿<EFBFBD>0Ŀ<30><C4BF>IP<49><50>ַ
|
||||
//extern u8 S0_DPort[2]; // <20>˿<EFBFBD>0Ŀ<30>Ķ˿ں<CBBF>(6000)
|
||||
|
||||
//extern u8 UDP_DIPR[4]; // UDP(<28>㲥)ģʽ,Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ
|
||||
//extern u8 UDP_DPORT[2]; // UDP(<28>㲥)ģʽ,Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>
|
||||
|
||||
///***************----- <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>ģʽ -----***************/
|
||||
//extern u8 S0_Mode; // <20>˿<EFBFBD>0<EFBFBD><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ,0:TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ,1:TCP<43>ͻ<EFBFBD><CDBB><EFBFBD>ģʽ,2:UDP(<28>㲥)ģʽ
|
||||
//#define TCP_SERVER 0x00 // TCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
||||
//#define TCP_CLIENT 0x01 // TCP<43>ͻ<EFBFBD><CDBB><EFBFBD>ģʽ
|
||||
//#define UDP_MODE 0x02 // UDP(<28>㲥)ģʽ
|
||||
|
||||
///***************----- <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>״̬ -----***************/
|
||||
//extern u8 S0_State; // <20>˿<EFBFBD>0״̬<D7B4><CCAC>¼,1:<3A>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><CABC>,2<>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||||
//#define S_INIT 0x01 // <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ɳ<EFBFBD>ʼ<EFBFBD><CABC>
|
||||
//#define S_CONN 0x02 // <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
///***************----- <20>˿<EFBFBD><CBBF>շ<EFBFBD><D5B7><EFBFBD><EFBFBD>ݵ<EFBFBD>״̬ -----***************/
|
||||
//extern u8 S0_Data; // <20>˿<EFBFBD>0<EFBFBD><30><EFBFBD>պͷ<D5BA><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>״̬,1:<3A>˿ڽ<CBBF><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>,2:<3A>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//#define S_RECEIVE 0x01 // <20>˿ڽ<CBBF><DABD>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>
|
||||
//#define S_TRANSMITOK 0x02 // <20>˿ڷ<CBBF><DAB7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
///***************----- <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> -----***************/
|
||||
//extern u8 Rx_Buffer[2048]; // <20>˿ڽ<CBBF><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern u8 Tx_Buffer[2048]; // <20>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
//extern u8 W5500_Interrupt; // W5500<30>жϱ<D0B6>־(0:<3A><><EFBFBD>ж<EFBFBD>,1:<3A><><EFBFBD>ж<EFBFBD>)
|
||||
typedef u8 SOCKET; // <20>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>˿ں<CBBF><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
// extern void Delay(unsigned int d);//<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>(ms)
|
||||
//extern void W5500_GPIO_Configuration(void); // W5500 GPIO<49><4F>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern void W5500_NVIC_Configuration(void); // W5500 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6><EFBFBD><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern void SPI_Configuration(void); // W5500 SPI<50><49>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(STM32 SPI1)
|
||||
//extern void W5500_Hardware_Reset(void); // Ӳ<><D3B2><EFBFBD><EFBFBD>λW5500
|
||||
//extern void W5500_Init(void); // <20><>ʼ<EFBFBD><CABC>W5500<30>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern u8 Detect_Gateway(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern void Socket_Init(SOCKET s); // ָ<><D6B8>Socket(0~7)<29><>ʼ<EFBFBD><CABC>
|
||||
//extern u8 Socket_Connect(SOCKET s); // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)Ϊ<>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern u8 Socket_Listen(SOCKET s); // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)<29><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȴ<EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
//extern u8 Socket_UDP(SOCKET s); // <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>Socket(0~7)ΪUDPģʽ
|
||||
//extern u16 Read_SOCK_Data_Buffer(SOCKET s, u8 *dat_ptr); // ָ<><D6B8>Socket(0~7)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
||||
//extern void Write_SOCK_Data_Buffer(SOCKET s, u8 *dat_ptr, u16 size); // ָ<><D6B8>Socket(0~7)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD>
|
||||
//extern void W5500_Interrupt_Process(void); // W5500<30>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define BSP_W5500_PORT_NUM 1
|
||||
#define BSP_W5500_DATA_LEN 2048
|
||||
|
||||
|
||||
|
||||
typedef struct bsp_W5500_Class_t bsp_W5500_Class_t;
|
||||
|
||||
struct bsp_W5500_Class_t
|
||||
{
|
||||
SOCKET SocketPort;
|
||||
struct
|
||||
{
|
||||
/***************----- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> -----***************/
|
||||
u8 Gateway_IP[4]; /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
|
||||
u8 Sub_Mask[4]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 Phy_Addr[6]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(MAC)*/
|
||||
u8 IP_Addr[4]; /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
|
||||
u8 Port[2]; /*<2A>˿<EFBFBD>0<EFBFBD>Ķ˿ں<CBBF>(5000) */
|
||||
u8 DIP[4]; /*<2A>˿<EFBFBD>0Ŀ<30><C4BF>IP<49><50>ַ*/
|
||||
u8 DPort[2]; /*<2A>˿<EFBFBD>0Ŀ<30>Ķ˿ں<CBBF>(6000)*/
|
||||
|
||||
u8 UDP_DIPR[4]; /*UDP(<28>㲥)ģʽ,Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IP<49><50>ַ*/
|
||||
u8 UDP_DPORT[2]; /*UDP(<28>㲥)ģʽ,Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ں<CBBF>*/
|
||||
}ConfigData;
|
||||
/***************----- <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>ģʽ -----***************/
|
||||
u8 Run_Mode;
|
||||
/***************----- <20>˿ڵ<CBBF><DAB5><EFBFBD><EFBFBD><EFBFBD>״̬ -----***************/
|
||||
u8 Run_State;
|
||||
/***************----- <20>˿<EFBFBD><CBBF>շ<EFBFBD><D5B7><EFBFBD><EFBFBD>ݵ<EFBFBD>״̬ -----***********/
|
||||
u8 TR_Data_State;
|
||||
/***************----- <20>˿<EFBFBD><CBBF><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD> -----***************/
|
||||
u8 Rx_Buffer[BSP_W5500_DATA_LEN]; // <20>˿ڽ<CBBF><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
u8 Tx_Buffer[BSP_W5500_DATA_LEN]; // <20>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݻ<EFBFBD><DDBB><EFBFBD><EFBFBD><EFBFBD>
|
||||
|
||||
u8 Interrupt; // W5500<30>жϱ<D0B6>־(0:<3A><><EFBFBD>ж<EFBFBD>,1:<3A><><EFBFBD>ж<EFBFBD>)
|
||||
|
||||
void (*Rx_DataAnalysis)(bsp_W5500_Class_t *,u8 *,u16 );
|
||||
};
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 Gateway_IP[4]; /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
|
||||
u8 Sub_Mask[4]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 Phy_Addr[6]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ(MAC)*/
|
||||
u8 IP_Addr[4]; /*<2A><><EFBFBD><EFBFBD>IP<49><50>ַ*/
|
||||
bsp_W5500_Class_t W5500_Class[BSP_W5500_PORT_NUM]; /*<2A>˿ڳ<CBBF>Ա*/
|
||||
void (*Interrupt_Process)(void); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
void (*Init)(void); /*<2A><>ʼ<EFBFBD><CABC>*/
|
||||
void (*Task)(void); /*<2A><><EFBFBD><EFBFBD>*/
|
||||
void (*Socket_Send)(bsp_W5500_Class_t *, u8 *, u16 ); /*<2A>˿ڷ<CBBF><DAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}bsp_W5500_t;
|
||||
|
||||
|
||||
extern bsp_W5500_t W5500;
|
||||
#endif
|
||||
489
calib_board/usr/bsp/bsp_uart.c
Normal file
489
calib_board/usr/bsp/bsp_uart.c
Normal file
@@ -0,0 +1,489 @@
|
||||
#include "bsp_uart.h"
|
||||
#include "string.h"
|
||||
|
||||
/* RS485<38><35><EFBFBD>ƺ궨<C6BA><EAB6A8> */
|
||||
#define RS485_RX HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_SET)
|
||||
#define RS485_TX HAL_GPIO_WritePin(RS485_EN_GPIO_Port, RS485_EN_Pin, GPIO_PIN_SET)
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>շ<EFBFBD><D5B7><EFBFBD><EFBFBD><EFBFBD>С */
|
||||
#define RX_TEMP_BUFF_NUM (3000U)
|
||||
|
||||
/* UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD> */
|
||||
#define UART1_TX_LEN (3000U)
|
||||
#define UART1_RX_LEN (3000U)
|
||||
|
||||
#define UART2_TX_LEN (3000U)
|
||||
#define UART2_RX_LEN (3000U)
|
||||
|
||||
#define UART4_TX_LEN (3000U)
|
||||
#define UART4_RX_LEN (3000U)
|
||||
|
||||
/* ȫ<>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u8 uart1_tx_buff[UART1_TX_LEN];
|
||||
u8 uart1_rx_buff[UART1_RX_LEN];
|
||||
|
||||
u8 uart2_tx_buff[UART2_TX_LEN];
|
||||
u8 uart2_rx_buff[UART2_RX_LEN];
|
||||
|
||||
u8 uart4_tx_buff[UART4_TX_LEN];
|
||||
u8 uart4_rx_buff[UART4_RX_LEN];
|
||||
|
||||
u8 rx_temp_buff[RX_TEMP_BUFF_NUM];
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void bsp_uart_init(bsp_uart_t *p_uart);
|
||||
static void bsp_uart_send(bsp_uart_t *p_uart, u8 *p_data, u16 len);
|
||||
static void bsp_uart_rx_idle_int(bsp_uart_t *p_uart);
|
||||
static void bsp_uart_rx_time_increment(bsp_uart_t *p_uart, u16 time);
|
||||
static void bsp_uart_rx_task(bsp_uart_t *p_uart);
|
||||
static void bsp_uart_rx_time_start(bsp_uart_t *p_uart);
|
||||
static void bsp_uart_tx_dma_tc_int(bsp_uart_t *p_uart);
|
||||
static void bsp_uart_dma_send(bsp_uart_t *p_uart, u8 *p_data, u16 len);
|
||||
|
||||
/* <20>ⲿHAL<41><4C><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
extern UART_HandleTypeDef huart1;
|
||||
extern UART_HandleTypeDef huart2;
|
||||
extern UART_HandleTypeDef huart4;
|
||||
|
||||
extern DMA_HandleTypeDef hdma_usart1_rx;
|
||||
extern DMA_HandleTypeDef hdma_usart1_tx;
|
||||
extern DMA_HandleTypeDef hdma_usart2_rx;
|
||||
extern DMA_HandleTypeDef hdma_usart2_tx;
|
||||
extern DMA_HandleTypeDef hdma_uart4_rx;
|
||||
extern DMA_HandleTypeDef hdma_uart4_tx;
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: com_uart1
|
||||
* <20><><EFBFBD><EFBFBD>: UART1<54><31><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>UART1<54><31>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻص<CDBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
bsp_uart_t com_uart1 =
|
||||
{
|
||||
.rx_queue = queue(u8, UART1_RX_LEN),
|
||||
.uart = &huart1,
|
||||
|
||||
.tx_dma = &hdma_usart1_tx,
|
||||
.rx_dma = &hdma_usart1_rx,
|
||||
|
||||
.tx_dma_len = UART1_TX_LEN,
|
||||
.rx_dma_len = UART1_RX_LEN,
|
||||
|
||||
.tx_addr = &uart1_tx_buff[0],
|
||||
.rx_addr = &uart1_rx_buff[0],
|
||||
|
||||
.tx_dma_complete_flag = 1,
|
||||
.rx_time_over = 0,
|
||||
|
||||
.relay.uart = NULL,
|
||||
|
||||
.init = bsp_uart_init,
|
||||
.send = bsp_uart_send,
|
||||
|
||||
.tx_dma_tc_int = bsp_uart_tx_dma_tc_int,
|
||||
.rx_idle_int = bsp_uart_rx_idle_int,
|
||||
.rx_time_increment_int = bsp_uart_rx_time_increment,
|
||||
.rx_data_analysis = NULL,
|
||||
.rx_task = bsp_uart_rx_task,
|
||||
};
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: com_uart2
|
||||
* <20><><EFBFBD><EFBFBD>: UART2<54><32><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>UART2<54><32>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻص<CDBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
bsp_uart_t com_uart2 =
|
||||
{
|
||||
.rx_queue = queue(u8, UART2_RX_LEN),
|
||||
.uart = &huart2,
|
||||
|
||||
.tx_dma = &hdma_usart2_tx,
|
||||
.rx_dma = &hdma_usart2_rx,
|
||||
|
||||
.tx_dma_len = UART2_TX_LEN,
|
||||
.rx_dma_len = UART2_RX_LEN,
|
||||
|
||||
.tx_addr = &uart2_tx_buff[0],
|
||||
.rx_addr = &uart2_rx_buff[0],
|
||||
|
||||
.tx_dma_complete_flag = 1,
|
||||
.rx_time_over = 0,
|
||||
|
||||
.relay.uart = &com_uart4,
|
||||
|
||||
.init = bsp_uart_init,
|
||||
.send = bsp_uart_send,
|
||||
.tx_dma_tc_int = bsp_uart_tx_dma_tc_int,
|
||||
.rx_idle_int = bsp_uart_rx_idle_int,
|
||||
.rx_time_increment_int = bsp_uart_rx_time_increment,
|
||||
.rx_data_analysis = NULL,
|
||||
.rx_task = bsp_uart_rx_task,
|
||||
};
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: com_uart4
|
||||
* <20><><EFBFBD><EFBFBD>: UART4<54><34><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>UART4<54><34>Ӳ<EFBFBD><D3B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͻص<CDBB><D8B5><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
bsp_uart_t com_uart4 =
|
||||
{
|
||||
.rx_queue = queue(u8, UART4_RX_LEN),
|
||||
.uart = &huart4,
|
||||
|
||||
.tx_dma = &hdma_uart4_tx,
|
||||
.rx_dma = &hdma_uart4_rx,
|
||||
|
||||
.tx_dma_len = UART4_TX_LEN,
|
||||
.rx_dma_len = UART4_RX_LEN,
|
||||
|
||||
.tx_addr = &uart4_tx_buff[0],
|
||||
.rx_addr = &uart4_rx_buff[0],
|
||||
|
||||
.tx_dma_complete_flag = 1,
|
||||
.rx_time_over = 0,
|
||||
|
||||
.relay.uart = NULL,
|
||||
|
||||
.init = bsp_uart_init,
|
||||
.send = bsp_uart_send,
|
||||
.tx_dma_tc_int = bsp_uart_tx_dma_tc_int,
|
||||
.rx_idle_int = bsp_uart_rx_idle_int,
|
||||
.rx_time_increment_int = bsp_uart_rx_time_increment,
|
||||
.rx_data_analysis = NULL,
|
||||
.rx_task = bsp_uart_rx_task,
|
||||
};
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_init
|
||||
* <20><><EFBFBD><EFBFBD>: UART<52><54>ʼ<EFBFBD><CABC>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʼ<EFBFBD><CABC>UART<52><54>ʹ<EFBFBD>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD>жϺ<D0B6>DMA<4D><41><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_init(bsp_uart_t *p_uart)
|
||||
{
|
||||
/* <20><><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ж<EFBFBD> */
|
||||
__HAL_UART_ENABLE_IT(p_uart->uart, UART_IT_IDLE);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD>ʹ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ж<EFBFBD>ģʽ */
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_uart->uart, p_uart->rx_addr, p_uart->rx_dma_len);
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_dma_send
|
||||
* <20><><EFBFBD><EFBFBD>: DMA<4D><41><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* p_data - Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* len - Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: ʹ<><CAB9>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>г<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_dma_send(bsp_uart_t *p_uart, u8 *p_data, u16 len)
|
||||
{
|
||||
u32 tick_start, tick;
|
||||
|
||||
p_uart->tx_dma_complete_flag = 0;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ij<CDB5><C4B3>ȴ<EFBFBD><C8B4>ڻ<EFBFBD><DABB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<EFBFBD><C8A3><EFBFBD><EFBFBD>ض<EFBFBD> */
|
||||
if(p_uart->tx_dma_len < len)
|
||||
len = p_uart->tx_dma_len;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD> */
|
||||
memcpy(p_uart->tx_addr, p_data, len);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> */
|
||||
HAL_UART_Transmit_DMA(p_uart->uart, p_uart->tx_addr, len);
|
||||
|
||||
/* <20>ȴ<EFBFBD><C8B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɣ<EFBFBD><C9A3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> */
|
||||
tick_start = HAL_GetTick();
|
||||
while(!p_uart->tx_dma_complete_flag)
|
||||
{
|
||||
tick = HAL_GetTick();
|
||||
if((tick - tick_start) > 200) /* 200ms<6D><73>ʱ */
|
||||
{
|
||||
p_uart->tx_dma_complete_flag = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_send
|
||||
* <20><><EFBFBD><EFBFBD>: UART<52><54><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* p_data - Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* len - Ҫ<><D2AA><EFBFBD>͵<EFBFBD><CDB5><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͺ<EFBFBD><CDBA><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ַֿ鷢<D6BF><E9B7A2>
|
||||
*******************************************/
|
||||
static void bsp_uart_send(bsp_uart_t *p_uart, u8 *p_data, u16 len)
|
||||
{
|
||||
u16 i, send_num;
|
||||
|
||||
/* RS485<38>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ */
|
||||
if(p_uart == &com_uart4)
|
||||
RS485_TX;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>͵Ĵ<CDB5><C4B4><EFBFBD> */
|
||||
send_num = len / p_uart->tx_dma_len;
|
||||
|
||||
/* <20>ֿ鷢<D6BF><E9B7A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
for(i = 0; i < send_num; i++)
|
||||
{
|
||||
bsp_uart_dma_send(p_uart, &p_data[p_uart->tx_dma_len * i], p_uart->tx_dma_len);
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
len -= p_uart->tx_dma_len * i;
|
||||
if(0 == len)
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
bsp_uart_dma_send(p_uart, &p_data[p_uart->tx_dma_len * i], len);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_tx_dma_tc_int
|
||||
* <20><><EFBFBD><EFBFBD>: DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>е<EFBFBD><D0B5>ã<EFBFBD><C3A3><EFBFBD><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־
|
||||
*******************************************/
|
||||
static void bsp_uart_tx_dma_tc_int(bsp_uart_t *p_uart)
|
||||
{
|
||||
p_uart->tx_dma_complete_flag = 1;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_rx_idle_int
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>UART<52><54><EFBFBD><EFBFBD><EFBFBD>жϣ<D0B6><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_rx_idle_int(bsp_uart_t *p_uart)
|
||||
{
|
||||
u16 rx_length, i;
|
||||
|
||||
/* ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD> */
|
||||
HAL_UART_DMAStop(p_uart->uart);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
||||
rx_length = p_uart->rx_dma_len - __HAL_DMA_GET_COUNTER(p_uart->rx_dma);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ0<CEAA><30>ֱ<EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD> */
|
||||
if (rx_length == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
for (i = 0; i < rx_length; i++)
|
||||
{
|
||||
queue_push_back(p_uart->rx_queue, (void *)&p_uart->rx_addr[i]);
|
||||
}
|
||||
|
||||
/* <20><>ʼ<EFBFBD><CABC><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1>ʱ */
|
||||
bsp_uart_rx_time_start(p_uart);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_uart->uart, p_uart->rx_addr, p_uart->rx_dma_len);
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_rx_time_increment
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>ճ<EFBFBD>ʱʱ<CAB1><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* time - <20><><EFBFBD>ӵ<EFBFBD>ʱ<EFBFBD><CAB1>ֵ
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD>ж<EFBFBD><D0B6>е<EFBFBD><D0B5>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_rx_time_increment(bsp_uart_t *p_uart, u16 time)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
||||
if(1 == p_uart->rx_start_flag)
|
||||
{
|
||||
p_uart->rx_time_count += time;
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_rx_time_start
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1>ʱ
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>ʼ<EFBFBD><CABC><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_rx_time_start(bsp_uart_t *p_uart)
|
||||
{
|
||||
p_uart->rx_start_flag = 1;
|
||||
p_uart->rx_time_count = 0;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_rx_time_stop
|
||||
* <20><><EFBFBD><EFBFBD>: ֹͣ<CDA3><D6B9><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1>ʱ
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: ֹͣ<CDA3><D6B9><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
static void bsp_uart_rx_time_stop(bsp_uart_t *p_uart)
|
||||
{
|
||||
p_uart->rx_start_flag = 0;
|
||||
p_uart->rx_time_count = 0;
|
||||
}
|
||||
|
||||
/******************************************
|
||||
* <20><><EFBFBD><EFBFBD>: bsp_uart_rx_task
|
||||
* <20><><EFBFBD><EFBFBD>: UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
* <20><><EFBFBD><EFBFBD>: p_uart - ָ<><D6B8>UART<52>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ճ<EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
|
||||
*******************************************/
|
||||
static void bsp_uart_rx_task(bsp_uart_t *p_uart)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD> */
|
||||
if(p_uart->rx_time_over < p_uart->rx_time_count)
|
||||
{
|
||||
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
||||
p_uart->rx_len = queue_size(p_uart->rx_queue);
|
||||
|
||||
/* ֹͣ<CDA3><D6B9>ʱ */
|
||||
bsp_uart_rx_time_stop(p_uart);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if(p_uart->rx_len <= p_uart->rx_dma_len && (0 != p_uart->rx_len))
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3>ȳ<EFBFBD><C8B3><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ն<EFBFBD><D5B6><EFBFBD> */
|
||||
if(RX_TEMP_BUFF_NUM < p_uart->rx_len)
|
||||
{
|
||||
queue_clear(p_uart->rx_queue);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* <20>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
for(u16 i = 0; i < p_uart->rx_len; i++)
|
||||
{
|
||||
queue_pop(p_uart->rx_queue, &rx_temp_buff[i]);
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if(NULL != p_uart->rx_data_analysis)
|
||||
{
|
||||
p_uart->rx_data_analysis(rx_temp_buff, p_uart->rx_len, p_uart);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ORE
|
||||
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
bsp_uart_t *p_uart = NULL;
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
p_uart = &com_uart1;
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
p_uart = &com_uart2;
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
p_uart = &com_uart4;
|
||||
}
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
if(huart->ErrorCode & HAL_UART_ERROR_NE)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
__HAL_UART_CLEAR_NEFLAG(huart);
|
||||
}
|
||||
if(huart->ErrorCode & HAL_UART_ERROR_FE)
|
||||
{
|
||||
// <20><><EFBFBD><EFBFBD>֡<EFBFBD><D6A1><EFBFBD><EFBFBD>
|
||||
__HAL_UART_CLEAR_FEFLAG(huart);
|
||||
}
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_ORE) != RESET)
|
||||
{
|
||||
__HAL_UART_CLEAR_OREFLAG(huart); // <20><><EFBFBD><EFBFBD>ORE<52><45>־
|
||||
}
|
||||
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_FE) != RESET)
|
||||
{
|
||||
__HAL_UART_CLEAR_FEFLAG(huart); // <20><><EFBFBD><EFBFBD>ORE<52><45>־
|
||||
}
|
||||
|
||||
//
|
||||
if(p_uart != NULL)
|
||||
{
|
||||
// HAL_UART_DeInit(huart);
|
||||
// HAL_UART_Init(huart);
|
||||
// HAL_UART_DMAStop(p_Uart->Uart);
|
||||
HAL_UARTEx_ReceiveToIdle_DMA(p_uart->uart, p_uart->rx_addr, p_uart->rx_dma_len);
|
||||
}
|
||||
}
|
||||
|
||||
// ʵ<>ֿ<EFBFBD><D6BF><EFBFBD><EFBFBD>жϻص<CFBB>
|
||||
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
|
||||
{
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
bsp_uart_rx_idle_int(&com_uart1);
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
bsp_uart_rx_idle_int(&com_uart2);
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
bsp_uart_rx_idle_int(&com_uart4);
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɻص<C9BB><D8B5><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
|
||||
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
// if (__HAL_UART_GET_FLAG(huart, UART_FLAG_IDLE))
|
||||
// {
|
||||
// __HAL_UART_CLEAR_IDLEFLAG(huart);
|
||||
|
||||
// if (huart->Instance == USART1)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart1);
|
||||
// }
|
||||
// else if (huart->Instance == USART2)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart2);
|
||||
// }
|
||||
// else if (huart->Instance == UART4)
|
||||
// {
|
||||
// bsp_Uart_Rx_IdleInt(&COM_Uart4);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart)
|
||||
{
|
||||
if (huart->Instance == USART1)
|
||||
{
|
||||
bsp_uart_tx_dma_tc_int(&com_uart1);
|
||||
}
|
||||
else if (huart->Instance == USART2)
|
||||
{
|
||||
bsp_uart_tx_dma_tc_int(&com_uart2);
|
||||
}
|
||||
else if (huart->Instance == UART4)
|
||||
{
|
||||
bsp_uart_tx_dma_tc_int(&com_uart2);
|
||||
}
|
||||
}
|
||||
|
||||
70
calib_board/usr/bsp/bsp_uart.h
Normal file
70
calib_board/usr/bsp/bsp_uart.h
Normal file
@@ -0,0 +1,70 @@
|
||||
#ifndef _BSP_UART_H_
|
||||
#define _BSP_UART_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "algo_queue.h"
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: bsp_uart_t
|
||||
* <20><><EFBFBD><EFBFBD>: UART<52><54><EFBFBD>ƽṹ<C6BD><E1B9B9>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD>UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ú<EFBFBD>״̬<D7B4><CCAC>Ϣ
|
||||
*******************************************/
|
||||
typedef struct bsp_uart_t bsp_uart_t;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD> */
|
||||
#define usart_type UART_HandleTypeDef
|
||||
#define dma_type DMA_HandleTypeDef
|
||||
|
||||
/******************************************
|
||||
* <20>ṹ<EFBFBD><E1B9B9>: bsp_uart_relay_t
|
||||
* <20><><EFBFBD><EFBFBD>: UARTת<54><D7AA><EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||
* <20><><EFBFBD><EFBFBD>: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>UART<52><54><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*******************************************/
|
||||
typedef struct
|
||||
{
|
||||
u8 flag; /* <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>־λ */
|
||||
bsp_uart_t *uart; /* ת<><D7AA><EFBFBD><EFBFBD>ȥ<EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
u16 time_out; /* ת<><D7AA><EFBFBD><EFBFBD>ʱʱ<CAB1><CAB1> */
|
||||
} bsp_uart_relay_t;
|
||||
|
||||
struct bsp_uart_t
|
||||
{
|
||||
queue rx_queue; /* <20><><EFBFBD>ݽ<EFBFBD><DDBD>ն<EFBFBD><D5B6><EFBFBD> */
|
||||
usart_type *uart; /* <20><><EFBFBD>ھ<EFBFBD><DABE><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
|
||||
dma_type *tx_dma; /* <20><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> */
|
||||
dma_type *rx_dma; /* <20><><EFBFBD><EFBFBD>DMA<4D><41><EFBFBD><EFBFBD> */
|
||||
|
||||
u8 tx_dma_ch; /* <20><><EFBFBD><EFBFBD>DMAͨ<41><CDA8><EFBFBD><EFBFBD> */
|
||||
u8 rx_dma_ch; /* <20><><EFBFBD><EFBFBD>DMAͨ<41><CDA8><EFBFBD><EFBFBD> */
|
||||
vu8 tx_dma_complete_flag; /* DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɱ<EFBFBD>־λ */
|
||||
|
||||
u8 *tx_addr; /* DMA<4D><41><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ */
|
||||
u8 *rx_addr; /* DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ */
|
||||
u16 tx_dma_len; /* DMA<4D><41><EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
u16 rx_dma_len; /* DMA<4D><41><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
u16 rx_len; /* <20><><EFBFBD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD> */
|
||||
u16 rx_time_count; /* <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> */
|
||||
u16 rx_time_over; /* <20><>ʱʱ<CAB1><CAB1> */
|
||||
u8 rx_start_flag; /* <20><>ʼ<EFBFBD><CABC>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־λ */
|
||||
|
||||
bsp_uart_relay_t relay; /* <20><><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
void (*init)(bsp_uart_t *); /* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*send)(bsp_uart_t *, u8 *, u16); /* <20><><EFBFBD>ڷ<EFBFBD><DAB7>ͺ<EFBFBD><CDBA><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
|
||||
void (*tx_dma_tc_int)(bsp_uart_t *); /* DMA<4D><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
|
||||
void (*rx_idle_int)(bsp_uart_t *); /* <20><><EFBFBD><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*rx_time_increment_int)(bsp_uart_t *, u16); /* <20>жϼ<D0B6><CFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*rx_data_analysis)(u8 *, u16, void *); /* <20><><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
void (*rx_task)(bsp_uart_t *); /* <20><><EFBFBD>ڽ<EFBFBD><DABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8> */
|
||||
};
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD> */
|
||||
extern bsp_uart_t com_uart1;
|
||||
extern bsp_uart_t com_uart2;
|
||||
extern bsp_uart_t com_uart4;
|
||||
|
||||
#endif
|
||||
241
calib_board/usr/bsp/bsp_w25q.c
Normal file
241
calib_board/usr/bsp/bsp_w25q.c
Normal file
@@ -0,0 +1,241 @@
|
||||
#include "bsp_w25q.h"
|
||||
#include "spi.h"
|
||||
#include "main.h"
|
||||
|
||||
/* spi flash Ƭѡ<C6AC><D1A1><EFBFBD><EFBFBD> - pb12 */
|
||||
#define W25Q32_CS_LOW() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)
|
||||
#define W25Q32_CS_HIGH() HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)
|
||||
|
||||
/* spi <20><><EFBFBD>亯<EFBFBD><E4BAAF> */
|
||||
static void w25q32_spi_transmit(uint8_t *data, uint16_t size) {
|
||||
HAL_SPI_Transmit(&hspi2, data, size, HAL_MAX_DELAY);
|
||||
}
|
||||
|
||||
static void w25q32_spi_receive(uint8_t *data, uint16_t size) {
|
||||
HAL_SPI_Receive(&hspi2, data, size, HAL_MAX_DELAY);
|
||||
}
|
||||
|
||||
static uint8_t w25q32_spi_transmit_receive(uint8_t data) {
|
||||
uint8_t rx_data;
|
||||
HAL_SPI_TransmitReceive(&hspi2, &data, &rx_data, 1, HAL_MAX_DELAY);
|
||||
return rx_data;
|
||||
}
|
||||
|
||||
/* <20>ڲ<EFBFBD><DAB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void w25q32_init(void);
|
||||
static void w25q32_read(uint32_t addr, uint8_t *data, uint32_t len);
|
||||
static void w25q32_write(uint32_t addr, uint8_t *data, uint32_t len);
|
||||
static void w25q32_chip_erase(void);
|
||||
static void w25q32_write_enable(void);
|
||||
static void w25q32_write_disable(void);
|
||||
static uint8_t w25q32_read_status_reg(void);
|
||||
static void w25q32_wait_for_write_end(void);
|
||||
static void w25q32_sector_erase(uint32_t sector_addr);
|
||||
static void w25q32_block_erase(uint32_t block_addr);
|
||||
static void w25q32_page_write(uint32_t addr, uint8_t *data, uint16_t len);
|
||||
static uint8_t w25q32_read_id(void);
|
||||
static void w25q32_power_down(void);
|
||||
static void w25q32_wake_up(void);
|
||||
|
||||
/* w25q32 <20><><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5> */
|
||||
w25q32_t w25q32 = {
|
||||
.init = w25q32_init,
|
||||
.read = w25q32_read,
|
||||
.write = w25q32_write,
|
||||
.chip_erase = w25q32_chip_erase,
|
||||
};
|
||||
|
||||
|
||||
/* <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void w25q32_init(void) {
|
||||
W25Q32_CS_HIGH(); /* <20><>ʼʱƬѡ<C6AC><D1A1><EFBFBD><EFBFBD> */
|
||||
w25q32_wake_up(); /* <20><><EFBFBD><EFBFBD>оƬ */
|
||||
}
|
||||
|
||||
/* <20><>ȡоƬid */
|
||||
static uint8_t w25q32_read_id(void) {
|
||||
uint8_t id = 0;
|
||||
uint8_t cmd = W25Q32_JEDEC_ID;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
w25q32_spi_receive(&id, 1); /* <20><><EFBFBD><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> */
|
||||
w25q32_spi_receive(&id, 1);
|
||||
w25q32_spi_receive(&id, 1); /* <20>豸id<69>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD> */
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
/* дʹ<D0B4><CAB9> */
|
||||
static void w25q32_write_enable(void) {
|
||||
uint8_t cmd = W25Q32_WRITE_ENABLE;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
W25Q32_CS_HIGH();
|
||||
}
|
||||
|
||||
/* д<><D0B4>ֹ */
|
||||
static void w25q32_write_disable(void) {
|
||||
uint8_t cmd = W25Q32_WRITE_DISABLE;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
W25Q32_CS_HIGH();
|
||||
}
|
||||
|
||||
/* <20><>ȡ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD> */
|
||||
static uint8_t w25q32_read_status_reg(void) {
|
||||
uint8_t status;
|
||||
uint8_t cmd = W25Q32_READ_STATUS_REG1;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
status = w25q32_spi_transmit_receive(0x00);
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/* <20>ȴ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
static void w25q32_wait_for_write_end(void) {
|
||||
while (w25q32_read_status_reg() & W25Q32_STATUS_BUSY) {
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>ι<EFBFBD><CEB9> */
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (4kb) */
|
||||
static void w25q32_sector_erase(uint32_t sector_addr) {
|
||||
uint8_t cmd[4];
|
||||
|
||||
/* ȷ<><C8B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>4k<34><6B><EFBFBD><EFBFBD> */
|
||||
sector_addr &= ~(W25Q32_SECTOR_SIZE - 1);
|
||||
|
||||
w25q32_write_enable();
|
||||
|
||||
cmd[0] = W25Q32_SECTOR_ERASE;
|
||||
cmd[1] = (sector_addr >> 16) & 0xFF;
|
||||
cmd[2] = (sector_addr >> 8) & 0xFF;
|
||||
cmd[3] = sector_addr & 0xFF;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(cmd, 4);
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
w25q32_wait_for_write_end();
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (64kb) */
|
||||
static void w25q32_block_erase(uint32_t block_addr) {
|
||||
uint8_t cmd[4];
|
||||
|
||||
/* ȷ<><C8B7><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7>64k<34><6B><EFBFBD><EFBFBD> */
|
||||
block_addr &= ~(W25Q32_BLOCK_SIZE - 1);
|
||||
|
||||
w25q32_write_enable();
|
||||
|
||||
cmd[0] = W25Q32_BLOCK_ERASE_64K;
|
||||
cmd[1] = (block_addr >> 16) & 0xFF;
|
||||
cmd[2] = (block_addr >> 8) & 0xFF;
|
||||
cmd[3] = block_addr & 0xFF;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(cmd, 4);
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
w25q32_wait_for_write_end();
|
||||
}
|
||||
|
||||
/* <20><>Ƭ<EFBFBD><C6AC><EFBFBD><EFBFBD> */
|
||||
static void w25q32_chip_erase(void) {
|
||||
uint8_t cmd = W25Q32_CHIP_ERASE;
|
||||
|
||||
w25q32_write_enable();
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
w25q32_wait_for_write_end();
|
||||
}
|
||||
|
||||
/* ҳд<D2B3><D0B4> (<28><><EFBFBD><EFBFBD>256<35>ֽ<EFBFBD>) */
|
||||
static void w25q32_page_write(uint32_t addr, uint8_t *data, uint16_t len) {
|
||||
uint8_t cmd[4];
|
||||
|
||||
if (len > W25Q32_PAGE_SIZE) {
|
||||
len = W25Q32_PAGE_SIZE;
|
||||
}
|
||||
|
||||
w25q32_write_enable();
|
||||
|
||||
cmd[0] = W25Q32_PAGE_PROGRAM;
|
||||
cmd[1] = (addr >> 16) & 0xFF;
|
||||
cmd[2] = (addr >> 8) & 0xFF;
|
||||
cmd[3] = addr & 0xFF;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(cmd, 4);
|
||||
w25q32_spi_transmit(data, len);
|
||||
W25Q32_CS_HIGH();
|
||||
|
||||
w25q32_wait_for_write_end();
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD>ⳤ<EFBFBD><E2B3A4>д<EFBFBD><D0B4> */
|
||||
static void w25q32_write(uint32_t addr, uint8_t *data, uint32_t len) {
|
||||
uint32_t page_remaining;
|
||||
uint32_t offset = 0;
|
||||
|
||||
while (len > 0) {
|
||||
/* <20><><EFBFBD>㵱ǰҳʣ<D2B3><CAA3><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD> */
|
||||
page_remaining = W25Q32_PAGE_SIZE - (addr % W25Q32_PAGE_SIZE);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4><EFBFBD>ij<EFBFBD><C4B3><EFBFBD> */
|
||||
uint32_t write_len = (len < page_remaining) ? len : page_remaining;
|
||||
|
||||
/* д<><D0B4>һҳ<D2BB><D2B3><EFBFBD><EFBFBD> */
|
||||
w25q32_page_write(addr, &data[offset], write_len);
|
||||
|
||||
/* <20><><EFBFBD>µ<EFBFBD>ַ<EFBFBD><D6B7>ƫ<EFBFBD><C6AB> */
|
||||
addr += write_len;
|
||||
offset += write_len;
|
||||
len -= write_len;
|
||||
}
|
||||
}
|
||||
|
||||
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
|
||||
static void w25q32_read(uint32_t addr, uint8_t *data, uint32_t len) {
|
||||
uint8_t cmd[4];
|
||||
|
||||
cmd[0] = W25Q32_READ_DATA;
|
||||
cmd[1] = (addr >> 16) & 0xFF;
|
||||
cmd[2] = (addr >> 8) & 0xFF;
|
||||
cmd[3] = addr & 0xFF;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(cmd, 4);
|
||||
w25q32_spi_receive(data, len);
|
||||
W25Q32_CS_HIGH();
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ */
|
||||
static void w25q32_power_down(void) {
|
||||
uint8_t cmd = W25Q32_POWER_DOWN;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
W25Q32_CS_HIGH();
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>оƬ */
|
||||
static void w25q32_wake_up(void) {
|
||||
uint8_t cmd = W25Q32_RELEASE_POWER_DOWN;
|
||||
|
||||
W25Q32_CS_LOW();
|
||||
w25q32_spi_transmit(&cmd, 1);
|
||||
W25Q32_CS_HIGH();
|
||||
HAL_Delay(5); /* <20>ȴ<EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD> */
|
||||
}
|
||||
|
||||
57
calib_board/usr/bsp/bsp_w25q.h
Normal file
57
calib_board/usr/bsp/bsp_w25q.h
Normal file
@@ -0,0 +1,57 @@
|
||||
#ifndef __BSP_W25Q_H__
|
||||
#define __BSP_W25Q_H__
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* w25q32jvssiq <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define W25Q32_FLASH_SIZE (0x400000UL) /* 4mb = 32mb */
|
||||
#define W25Q32_PAGE_SIZE (256) /* ҳ<><D2B3>С */
|
||||
#define W25Q32_SECTOR_SIZE (4096) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С */
|
||||
#define W25Q32_BLOCK_SIZE (65536) /* <20><><EFBFBD><EFBFBD>С */
|
||||
|
||||
/* w25q32jvssiq <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define W25Q32_WRITE_ENABLE 0x06
|
||||
#define W25Q32_WRITE_DISABLE 0x04
|
||||
#define W25Q32_READ_STATUS_REG1 0x05
|
||||
#define W25Q32_WRITE_STATUS_REG 0x01
|
||||
#define W25Q32_READ_DATA 0x03
|
||||
#define W25Q32_FAST_READ 0x0B
|
||||
#define W25Q32_PAGE_PROGRAM 0x02
|
||||
#define W25Q32_SECTOR_ERASE 0x20
|
||||
#define W25Q32_BLOCK_ERASE_32K 0x52
|
||||
#define W25Q32_BLOCK_ERASE_64K 0xD8
|
||||
#define W25Q32_CHIP_ERASE 0xC7
|
||||
#define W25Q32_POWER_DOWN 0xB9
|
||||
#define W25Q32_RELEASE_POWER_DOWN 0xAB
|
||||
#define W25Q32_DEVICE_ID 0xAB
|
||||
#define W25Q32_MANUFACTURER_ID 0x90
|
||||
#define W25Q32_JEDEC_ID 0x9F
|
||||
|
||||
/* ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>λ */
|
||||
#define W25Q32_STATUS_BUSY (1 << 0)
|
||||
#define W25Q32_STATUS_WRITE_EN (1 << 1)
|
||||
|
||||
/* flash <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD> */
|
||||
#define W25Q32_USER_DATA_ADDR 0x000000 /* <20>û<EFBFBD><C3BB><EFBFBD><EFBFBD>ݴ洢<DDB4><E6B4A2>ʼ<EFBFBD><CABC>ַ */
|
||||
#define W25Q32_USER_DATA_SIZE 0x100000 /* <20><>Լ1mb<6D>ռ<EFBFBD><D5BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
/* w25q32 <20><><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><E1B9B9> */
|
||||
typedef struct {
|
||||
void (*init)(void);
|
||||
void (*read)(uint32_t addr, uint8_t *data, uint32_t len);
|
||||
void (*write)(uint32_t addr, uint8_t *data, uint32_t len);
|
||||
void (*chip_erase)(void);
|
||||
} w25q32_t;
|
||||
|
||||
/* ȫ<>ֶ<EFBFBD><D6B6><EFBFBD> */
|
||||
extern w25q32_t w25q32;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __BSP_W25Q_H__ */
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,155 +0,0 @@
|
||||
#ifndef __TJCUSARTHMI_H_
|
||||
#define __TJCUSARTHMI_H_
|
||||
|
||||
#include "stm32f4xx.h"
|
||||
#include "main.h" // <20><><EFBFBD><EFBFBD> HAL <20><>ͷ<EFBFBD>ļ<EFBFBD>
|
||||
#include "bsp_Uart.h"
|
||||
#include "bsp_Flash.h" // <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4>ھ<EFBFBD><DABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>main.c<>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>huart2<74><32>
|
||||
extern UART_HandleTypeDef huart2;
|
||||
|
||||
// <20><><EFBFBD>崮<EFBFBD><E5B4AE><EFBFBD><EFBFBD>ʹ<EFBFBD>õĴ<C3B5><C4B4><EFBFBD>
|
||||
#define TJC_UART huart2
|
||||
|
||||
// <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define RINGBUFF_LEN (500)
|
||||
|
||||
// ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TJC<4A><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Э<EFBFBD>飩
|
||||
#define TJC_END_BYTES 0xFF
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD><EEB3A4>
|
||||
#define MAX_COMMAND_LEN 200 // <20><><EFBFBD>ӳ<EFBFBD><D3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>豸<EFBFBD><E8B1B8>Ϣ
|
||||
|
||||
// <20>Զ<EFBFBD><D4B6><EFBFBD>ָ<EFBFBD><EFBFBD><EEB6A8>
|
||||
#define CUSTOM_CMD_HEADER_0 0xAA
|
||||
#define CUSTOM_CMD_HEADER_1 0x55
|
||||
|
||||
// ָ<><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define CMD_DISPLAY_DATA 0x02 // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
|
||||
#define CMD_ALARM 0x03 // <20><><EFBFBD><EFBFBD>
|
||||
#define CMD_DELETE_DEVICE 0x04 // ɾ<><C9BE><EFBFBD>豸
|
||||
|
||||
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SUB_CMD_SHOW_DEVICES 0x01 // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><D3B5>豸
|
||||
#define SUB_CMD_REGION_STATS 0x02 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ
|
||||
#define SUB_CMD_REGION1_DEVICES 0x03 // <20><>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
#define SUB_CMD_REGION2_DEVICES 0x04 // <20>ڶ<EFBFBD><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
#define SUB_CMD_REGION3_DEVICES 0x05 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
#define SUB_CMD_REGION4_DEVICES 0x06 // <20><><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define SUB_CMD_HISTORY_ALARM 0x01 // <20><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD>
|
||||
#define SUB_CMD_REALTIME_ALARM 0x02 // ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD>
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD>豸ָ<E8B1B8><D6B8>ʶ<EFBFBD><CAB6>
|
||||
#define ADD_DEVICE_CMD_BYTE 0x43 // 'C'<27><>ASCII<49><49>
|
||||
|
||||
// <20>ָ<EFBFBD><D6B8><EFBFBD>
|
||||
#define DATA_SEPARATOR 0xAA
|
||||
|
||||
// ͨ<><CDA8>״̬ö<CCAC><C3B6>
|
||||
typedef enum {
|
||||
COMM_STATUS_NORMAL = 0, // <20><><EFBFBD><EFBFBD>
|
||||
COMM_STATUS_ABNORMAL // <20>쳣
|
||||
} CommStatus;
|
||||
|
||||
// ©Һ״̬ö<CCAC><C3B6>
|
||||
typedef enum {
|
||||
LEAK_NORMAL = 0, // <20><><EFBFBD><EFBFBD>
|
||||
LEAK_ABNORMAL // ©Һ
|
||||
} LeakStatus;
|
||||
|
||||
// <20>ϴ<EFBFBD>״̬ö<CCAC><C3B6>
|
||||
typedef enum {
|
||||
BREAK_NORMAL = 0, // <20><><EFBFBD><EFBFBD>
|
||||
BREAK_ABNORMAL // <20>ϴ<EFBFBD>
|
||||
} BreakStatus;
|
||||
|
||||
// ͨ<><CDA8>״̬<D7B4>ṹ<EFBFBD><E1B9B9>
|
||||
typedef struct {
|
||||
LeakStatus leak_status; // ©Һ״̬
|
||||
BreakStatus break_status; // <20>ϴ<EFBFBD>״̬
|
||||
int leak_meter; // ©Һ<C2A9><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>©Һ״̬Ϊ©Һ<C2A9><D2BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ0<CABE><30>
|
||||
} ChannelStatus;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD><C3B6>
|
||||
typedef enum {
|
||||
ALARM_LEAK = 0, // ©Һ
|
||||
ALARM_BREAK, // <20>ϴ<EFBFBD>
|
||||
ALARM_COMM // ͨ<><CDA8><EFBFBD>쳣
|
||||
} AlarmType;
|
||||
|
||||
// <20>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||
typedef struct {
|
||||
uint8_t port; // <20>˿ں<CBBF>
|
||||
char region[20]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӣ<EFBFBD>ģ<EFBFBD>
|
||||
uint8_t device_id; // <20>豸ID (1-254)
|
||||
char device_name[20]; // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>Ӣ<EFBFBD>ģ<EFBFBD>
|
||||
LeakStatus leak_status; // ©Һ״̬
|
||||
BreakStatus break_status; // <20>ϴ<EFBFBD>״̬
|
||||
CommStatus comm_status; // ͨ<><CDA8>״̬
|
||||
ChannelStatus channels[4]; // <20>ĸ<EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD>״̬
|
||||
} DeviceInfo;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ṹ<EFBFBD><E1B9B9>
|
||||
typedef struct {
|
||||
char region[20]; // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t device_id; // <20>豸ID
|
||||
char device_name[20]; // <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
AlarmType alarm_type; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char start_time[20]; // <20><>ʼʱ<CABC><CAB1>
|
||||
char end_time[20]; // <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||||
} AlarmInfo;
|
||||
|
||||
// <20><><EFBFBD><EFBFBD>ͳ<EFBFBD>ƽṹ<C6BD><E1B9B9>
|
||||
typedef struct {
|
||||
char region_name[20]; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint8_t total_devices; // <20><><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t leak_devices; // ©Һ<C2A9>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t break_devices; // <20>ϴ<EFBFBD><CFB4>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
uint8_t comm_devices; // ͨ<><CDA8><EFBFBD>쳣<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>
|
||||
} RegionStats;
|
||||
|
||||
// <20>ⲿ<EFBFBD>ɵ<EFBFBD><C9B5>ú<EFBFBD><C3BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
void TJC_Init(bsp_Uart_t *pUart);
|
||||
void TJC_SendData(uint8_t *data, uint16_t len);
|
||||
void TJCPrintf(const char *cmd, ...);
|
||||
|
||||
// <20><><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
|
||||
uint16_t TJC_CleanBufferFromInvalidPatterns(void);
|
||||
void initRingBuffer(void);
|
||||
void writeRingBuff(uint8_t data);
|
||||
void deleteRingBuff(uint16_t size);
|
||||
uint16_t getRingBuffLength(void);
|
||||
uint8_t read1BFromRingBuff(uint16_t position);
|
||||
uint8_t isRingBuffOverflow(void);
|
||||
|
||||
// ָ<><EFBFBD><EEB4A6><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><D8BA><EFBFBD>
|
||||
void TJC_ProcessCommand(uint8_t *cmd, uint16_t len);
|
||||
uint8_t TJC_CheckEndBytes(uint8_t *data, uint16_t len, uint16_t *end_pos);
|
||||
void TJC_SendResponse(const char *response);
|
||||
void TJC_ProcessSerialData(u8 *data, u16 len, void *p_arg);
|
||||
void TJC_DeleteDevices(uint8_t *delete_flags, uint8_t flag_count);
|
||||
void TJC_ProcessDeleteCommand(uint8_t *cmd, uint16_t len);
|
||||
|
||||
/*<2A><><EFBFBD>Է<EFBFBD><D4B7><EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
void TJC_SendInitCommands(void);
|
||||
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
uint16_t CalculateCRC16(uint8_t *data, uint16_t length);
|
||||
void TJC_ProcessCustomCommand(uint8_t *cmd, uint16_t len);
|
||||
void TJC_SendAlarmHistory(void);
|
||||
void TJC_SendRealtimeAlarms(void);
|
||||
void TJC_SendDeviceList(void);
|
||||
uint8_t TJC_AddDeviceToFlash(uint8_t *data, uint16_t len);
|
||||
void TJC_SendRegionStats(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
|
||||
void TJC_SendRegionDeviceDetails(uint8_t region_index);
|
||||
|
||||
// <20>궨<EFBFBD><EAB6A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
#define usize getRingBuffLength()
|
||||
#define code_c() initRingBuffer()
|
||||
#define udelete(x) deleteRingBuff(x)
|
||||
#define u(x) read1BFromRingBuff(x)
|
||||
|
||||
#endif
|
||||
980
calib_board/usr/gui/gui_tjc_hmi.c
Normal file
980
calib_board/usr/gui/gui_tjc_hmi.c
Normal file
@@ -0,0 +1,980 @@
|
||||
#include "GUI_tjc_hmi.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#include "proto_modbus_lib.h"
|
||||
|
||||
|
||||
#include "bsp_Flash.h" // <20><><EFBFBD><EFBFBD>Flash<73><68><EFBFBD><EFBFBD>
|
||||
#include "bsp_uart.h"
|
||||
|
||||
#include "app_leakage.h"
|
||||
|
||||
/*<2A><><EFBFBD>ڷ<EFBFBD><DAB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define HMI_TX_BUFFER_NUM (2048)
|
||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define GUI_TJC_HMI_TEXT_BUFFER_NUM (256)
|
||||
|
||||
/*֡ͷ*/
|
||||
#define HMI_PROTO_FRAME_HEADER1 (0xAA)
|
||||
#define HMI_PROTO_FRAME_HEADER2 (0x55)
|
||||
/*<2A><><EFBFBD><EFBFBD>*/
|
||||
#define HMI_PROTO_CMD_GET (0x03) /*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define HMI_PROTO_CMD_SET (0x10) /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||
/*<2A><><EFBFBD><EFBFBD>*/
|
||||
#define HMI_PROTO_GUI_MAIN (0x10)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_CURR_ALARM (0x11)/*ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_DETAIL_MAIN (0x12)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>_<EFBFBD><5F>ϸ<EFBFBD><CFB8>Ϣ */
|
||||
#define HMI_PROTO_GUI_LOGIN (0x13)/*<2A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_HISTORY_ALARM (0x14)/*<2A><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_TCP_CONFIG (0x15)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_DEVICE_CONFIG (0x16)/*<2A>豸<EFBFBD><E8B1B8><EFBFBD>ý<EFBFBD><C3BD><EFBFBD> */
|
||||
#define HMI_PROTO_GUI_HELP (0x17)/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
|
||||
#define HMI_PROTO_ASCII_RX_DELINITER (0xAA)/*<2A><><EFBFBD>շָ<D5B7><D6B8><EFBFBD>*/
|
||||
|
||||
#define HMI_PROTO_ASCII_TX_DELINITER (0xFF)/*<2A><><EFBFBD>ͷָ<CDB7><D6B8><EFBFBD>*/
|
||||
#define HMI_PROTO_ASCII_TX_DELINITER_NUM (3)/*<2A><><EFBFBD>ͷָ<CDB7><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
|
||||
|
||||
static void gui_tjc_hmi_init(void);
|
||||
static void gui_tjc_hmi_communication_data_analysis(u8 *p_data, u16 len, void *rx_uart);
|
||||
|
||||
/*<2A><><EFBFBD>ڷ<EFBFBD><DAB7>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static u8 hmi_tx_buffer[HMI_TX_BUFFER_NUM];
|
||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD>ƴ<EFBFBD><C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static char gui_tjc_hmi_text_buffer[GUI_TJC_HMI_TEXT_BUFFER_NUM];
|
||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> <20>˿ں<CBBF>*/
|
||||
static char *hmi_proto_string_com[] =
|
||||
{
|
||||
"COM1",
|
||||
"COM2",
|
||||
"COM3",
|
||||
"COM4"
|
||||
};
|
||||
|
||||
/*<2A>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static char *hmi_proto_string_baudrate[] =
|
||||
{
|
||||
"4800",
|
||||
"9600",
|
||||
"19200",
|
||||
"57600",
|
||||
"115200",
|
||||
};
|
||||
|
||||
|
||||
|
||||
static bsp_uart_t * p_rx_uart = NULL;
|
||||
|
||||
gui_tjc_hmi_t tjc_hmi =
|
||||
{
|
||||
.init = gui_tjc_hmi_init,
|
||||
};
|
||||
|
||||
gui_tjc_hmi_t *p_tjc_hmi = &tjc_hmi;
|
||||
|
||||
|
||||
|
||||
/*<2A><>ĻЭ<C4BB><D0AD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>*/
|
||||
static void gui_tjc_hmi_init(void)
|
||||
{
|
||||
com_uart1.rx_data_analysis = gui_tjc_hmi_communication_data_analysis;
|
||||
}
|
||||
|
||||
|
||||
/*<2A><><EFBFBD>ͽӿ<CDBD>*/
|
||||
static void gui_tjc_hmi_data_send(u8 *p_data,u16 len)
|
||||
{
|
||||
if(p_rx_uart != NULL)
|
||||
{
|
||||
p_rx_uart->send(p_rx_uart,p_data,len);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*<2A><><EFBFBD>ö<EFBFBD>Ӧ<EFBFBD>Ŀؼ<C4BF>
|
||||
x<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
y<EFBFBD><EFBFBD><EFBFBD>ڼ<EFBFBD><EFBFBD><EFBFBD>
|
||||
buffer<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>buffer
|
||||
format<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
...<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
*/
|
||||
static u16 gui_tjc_hmi_tx_text_display(u16 x,u16 y,char *buffer,const char *format,...)
|
||||
{
|
||||
u16 i,len;
|
||||
s16 state;
|
||||
va_list arg;
|
||||
|
||||
/*<2A><><EFBFBD>ջ<EFBFBD><D5BB><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
memset(gui_tjc_hmi_text_buffer,0,sizeof(gui_tjc_hmi_text_buffer));
|
||||
|
||||
va_start(arg,format);
|
||||
/*<2A><>ʽ<EFBFBD><CABD>ת<EFBFBD><D7AA><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>*/
|
||||
state = vsnprintf(gui_tjc_hmi_text_buffer,GUI_TJC_HMI_TEXT_BUFFER_NUM,format,arg);
|
||||
if(-1 == state || state > GUI_TJC_HMI_TEXT_BUFFER_NUM)
|
||||
{
|
||||
va_end(arg);
|
||||
printf("Length REEOR");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*ƴ<><C6B4><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>*/
|
||||
sprintf(buffer,"t%d_%d.txt=\"%s\"",x,y,gui_tjc_hmi_text_buffer);
|
||||
len = strlen(buffer);
|
||||
for(i=0;i<HMI_PROTO_ASCII_TX_DELINITER_NUM;i++)
|
||||
{
|
||||
buffer[len + i] = HMI_PROTO_ASCII_TX_DELINITER;
|
||||
}
|
||||
va_end(arg);
|
||||
return len + 3;
|
||||
}
|
||||
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ*/
|
||||
static void gui_tjc_hmi_main_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
/*ÿҳ<C3BF><D2B3>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
#define MAIN_PAGE_SUB_DEVICE_NUM (4)
|
||||
|
||||
u16 len = 0,i,j,x,y,index;
|
||||
u8 page_num,remain_region_num;
|
||||
|
||||
memset(hmi_tx_buffer,0,sizeof(hmi_tx_buffer));
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
page_num = leakage.region_num / MAIN_PAGE_SUB_DEVICE_NUM;
|
||||
remain_region_num = leakage.region_num % MAIN_PAGE_SUB_DEVICE_NUM;/*ʣ<><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
if(remain_region_num > 0)
|
||||
{
|
||||
page_num++;
|
||||
}
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||
{
|
||||
if(p_tjc_hmi->page.main_index == page_num - 1 && remain_region_num >0)/*<2A><>ʾʣ<CABE><CAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
for(j=0;j<remain_region_num;j++)
|
||||
{
|
||||
index = p_tjc_hmi->page.main_index * MAIN_PAGE_SUB_DEVICE_NUM + j;
|
||||
x = j;
|
||||
/*<2A><><EFBFBD><EFBFBD>*/
|
||||
y = 0;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.region_data[index].name);
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
y = 1;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].sub_device_num);
|
||||
/*©Һ<C2A9><D2BA><EFBFBD><EFBFBD>*/
|
||||
y = 2;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].leakage_num);
|
||||
/*<2A>ϴ<EFBFBD>*/
|
||||
y = 3;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].open_num);
|
||||
/*ͨѶ*/
|
||||
y = 4;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].time_out_num);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(j=0;j<MAIN_PAGE_SUB_DEVICE_NUM;j++)
|
||||
{
|
||||
index = p_tjc_hmi->page.main_index*MAIN_PAGE_SUB_DEVICE_NUM + j;
|
||||
x = j;
|
||||
/*<2A><><EFBFBD><EFBFBD>*/
|
||||
y = 0;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.region_data[index].name);
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
y = 1;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].sub_device_num);
|
||||
/*©Һ<C2A9><D2BA><EFBFBD><EFBFBD>*/
|
||||
y = 2;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].leakage_num);
|
||||
/*<2A>ϴ<EFBFBD>*/
|
||||
y = 3;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].open_num);
|
||||
/*ͨѶ*/
|
||||
y = 4;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",leakage.region_data[index].time_out_num);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case 0x03:/*<2A><>ҳ*/
|
||||
{
|
||||
if(0x01 == p_data[5])
|
||||
{
|
||||
if(page_num - 1 <= p_tjc_hmi->page.main_index)
|
||||
{
|
||||
p_tjc_hmi->page.main_index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.main_index++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if(0 == p_tjc_hmi->page.main_index)
|
||||
{
|
||||
p_tjc_hmi->page.main_index = page_num - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.main_index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
if(0x01 == p_data[0])
|
||||
{
|
||||
/*01<30><EFBFBD><F2BFAAB7><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
else
|
||||
{
|
||||
/*00<30>رշ<D8B1><D5B7><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
}
|
||||
}
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
|
||||
/*ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ*/
|
||||
static void gui_tjc_hmi_curr_alarm_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
/*ÿҳ<C3BF><D2B3>ʾ<EFBFBD>ı<EFBFBD><C4B1><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
#define REAL_ALARM_PAGE_NUM (4)
|
||||
u16 len = 0,i,j,x,y,device_index,ch,index;
|
||||
u8 page_num,remain_alrm_device_num,display_count;
|
||||
u8 alarm_device_count;
|
||||
u8 alarm_device_index[APP_LEAKAGE_SUB_DEVICE_NUM];
|
||||
|
||||
memset(hmi_tx_buffer,0,sizeof(hmi_tx_buffer));
|
||||
|
||||
/*<2A><><EFBFBD>㱨<EFBFBD><E3B1A8><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
alarm_device_count = 0;
|
||||
for(i = 0;i<APP_LEAKAGE_SUB_DEVICE_NUM;i++)
|
||||
{
|
||||
if(ENABLE != leakage.sub_device_data[i].flash_data.state)
|
||||
{
|
||||
continue ;
|
||||
}
|
||||
for(ch=0;ch<APP_LEAKAGE_SUB_DEVICE_CH_NUM;ch++)
|
||||
{
|
||||
u16 ch_state = leakage.sub_device_data[i].ch_data[ch].state;
|
||||
if(ch_state & (APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT | APP_LEAKAGE_SUB_DEVICE_STATE_OPEN | APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE))
|
||||
{
|
||||
alarm_device_index[alarm_device_count] = i;
|
||||
alarm_device_count++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
page_num = alarm_device_count / REAL_ALARM_PAGE_NUM;
|
||||
remain_alrm_device_num = alarm_device_count % REAL_ALARM_PAGE_NUM;
|
||||
if(remain_alrm_device_num > 0)
|
||||
{
|
||||
page_num++;
|
||||
}
|
||||
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ*/
|
||||
{
|
||||
if(p_tjc_hmi->page.real_alarm_index == page_num - 1 && remain_alrm_device_num > 0)
|
||||
{
|
||||
for(j=0;j<remain_alrm_device_num;j++)
|
||||
{
|
||||
index = p_tjc_hmi->page.real_alarm_index * REAL_ALARM_PAGE_NUM + j;
|
||||
device_index = alarm_device_index[index];
|
||||
x = j;
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
y = 0;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[index].flash_data.region_name);
|
||||
|
||||
/*<2A>豸ID*/
|
||||
y = 1;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[index].flash_data.modbus_id);
|
||||
|
||||
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
y = 2;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[index].flash_data.device_name);
|
||||
|
||||
/*ͨѶ״̬*/
|
||||
y =3;
|
||||
u8 comm_state = 0;
|
||||
for(ch=0;ch<APP_LEAKAGE_SUB_DEVICE_CH_NUM;ch++)
|
||||
{
|
||||
if(leakage.sub_device_data[device_index].ch_data[ch].state & APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
comm_state = APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(comm_state & APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD>ʱ");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
/*ͨ<><CDA8>״̬*/
|
||||
for(ch=0;ch<APP_LEAKAGE_SUB_DEVICE_CH_NUM;ch++)
|
||||
{
|
||||
u16 ch_state = leakage.sub_device_data[device_index].ch_data[ch].state;
|
||||
u16 ch_distance = leakage.sub_device_data[device_index].ch_data[ch].distance;
|
||||
|
||||
y = 4 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"©Һ");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
y =5 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_OPEN)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD>ϴ<EFBFBD>");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
y = 6 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",ch_distance);
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"0");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(j=0;j<REAL_ALARM_PAGE_NUM;j++)
|
||||
{
|
||||
index = p_tjc_hmi->page.real_alarm_index * REAL_ALARM_PAGE_NUM + j;
|
||||
device_index = alarm_device_index[index];
|
||||
|
||||
x = j;
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
y = 0;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[device_index].flash_data.region_name);
|
||||
|
||||
/*<2A>豸ID*/
|
||||
y = 1;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[index].flash_data.modbus_id);
|
||||
|
||||
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>*/
|
||||
y = 2;
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%s",leakage.sub_device_data[index].flash_data.device_name);
|
||||
|
||||
/*ͨѶ״̬*/
|
||||
y =3;
|
||||
u8 comm_state = 0;
|
||||
for(ch=0;ch<APP_LEAKAGE_SUB_DEVICE_CH_NUM;ch++)
|
||||
{
|
||||
if(leakage.sub_device_data[device_index].ch_data[ch].state & APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
comm_state = APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(comm_state & APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD>ʱ");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
/*ͨ<><CDA8>״̬*/
|
||||
for(ch=0;ch<APP_LEAKAGE_SUB_DEVICE_CH_NUM;ch++)
|
||||
{
|
||||
u16 ch_state = leakage.sub_device_data[device_index].ch_data[ch].state;
|
||||
u16 ch_distance = leakage.sub_device_data[device_index].ch_data[ch].distance;
|
||||
|
||||
y = 4 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"©Һ");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
y =5 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_OPEN)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD>ϴ<EFBFBD>");
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
y = 6 + (ch * 3);
|
||||
if(ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"%d",ch_distance);
|
||||
}else
|
||||
{
|
||||
len = gui_tjc_hmi_tx_text_display(x+1,y+1,(char *)&hmi_tx_buffer[len],"0");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case 0x03:/*<2A><>ҳ*/
|
||||
{
|
||||
if(0x01 == p_data[0])
|
||||
{
|
||||
if(page_num - 1 <= p_tjc_hmi->page.real_alarm_index)
|
||||
{
|
||||
p_tjc_hmi->page.real_alarm_index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.real_alarm_index++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if(0 == p_tjc_hmi->page.real_alarm_index)
|
||||
{
|
||||
p_tjc_hmi->page.real_alarm_index = page_num - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.real_alarm_index--;
|
||||
}
|
||||
}
|
||||
}
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void gui_tjc_hmi_detail_main_send(u8 cmd, u8 opa, u8 *p_data)
|
||||
{
|
||||
#define DETAIL_MAIN_NUM (4) /* ÿҳ<C3BF><D2B3>ʾ4<CABE><34><EFBFBD>豸 */
|
||||
|
||||
u16 len = 0, i, sub_device_index, ch, x, y, index;
|
||||
u8 page_num, remain_device_num, display_count;
|
||||
u8 region_idx; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
app_leakage_region_data_class_t *region_data;
|
||||
|
||||
memset(hmi_tx_buffer, 0, sizeof(hmi_tx_buffer));
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿҳ<C3BF><D2B3>ʾ4<CABE><34><EFBFBD>豸 */
|
||||
page_num = region_data->sub_device_num / DETAIL_MAIN_NUM;
|
||||
remain_device_num = region_data->sub_device_num % DETAIL_MAIN_NUM;
|
||||
if (remain_device_num > 0)
|
||||
{
|
||||
page_num++;
|
||||
}
|
||||
|
||||
if (HMI_PROTO_CMD_GET == cmd) /* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD> */
|
||||
{
|
||||
switch (opa)
|
||||
{
|
||||
case 0x01: /* <20><>ȡ<EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ */
|
||||
{
|
||||
/* <20><>ָ<EFBFBD><D6B8><EFBFBD>л<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (p_data[0] = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1<EFBFBD><31>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1-4) */
|
||||
u8 relative_region_idx = p_data[0];
|
||||
|
||||
if (relative_region_idx < 1 || relative_region_idx > 4)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Ĭ<EFBFBD><C4AC><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB> */
|
||||
relative_region_idx = 1;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3> * 4 + <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - 1 */
|
||||
region_idx = p_tjc_hmi->page.main_index * 4 + (relative_region_idx - 1);
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if (region_idx >= leakage.region_num)
|
||||
{
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD>磬<EFBFBD><E7A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
region_idx = 0;
|
||||
}
|
||||
|
||||
/* <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>л<EFBFBD><D0BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
if (region_idx != p_tjc_hmi->page.deliniter_main_index)
|
||||
{
|
||||
p_tjc_hmi->page.detail_main_index = 0;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD>浱ǰ<E6B5B1><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD>룬<EFBFBD><EBA3AC>ҳʱʹ<CAB1><CAB9> */
|
||||
p_tjc_hmi->page.deliniter_main_index = region_idx;
|
||||
|
||||
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
region_data = &leakage.region_data[region_idx];
|
||||
|
||||
/* <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD> */
|
||||
u8 start_index = p_tjc_hmi->page.detail_main_index * DETAIL_MAIN_NUM;
|
||||
|
||||
if (p_tjc_hmi->page.detail_main_index == page_num - 1 && remain_device_num > 0)
|
||||
{
|
||||
display_count = remain_device_num;
|
||||
}
|
||||
else
|
||||
{
|
||||
display_count = DETAIL_MAIN_NUM;
|
||||
}
|
||||
|
||||
for (i = 0; i < display_count; i++)
|
||||
{
|
||||
index = start_index + i;
|
||||
|
||||
if (index >= region_data->sub_device_num)
|
||||
break;
|
||||
|
||||
/* <20><>ȡ<EFBFBD>豸<EFBFBD><E8B1B8>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
sub_device_index = region_data->sub_device_index[index];
|
||||
x = i; /* 0-3<><33>ʾ<EFBFBD><CABE>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3><EFBFBD><EFBFBD>4<EFBFBD><34><EFBFBD>豸λ<E8B1B8><CEBB> */
|
||||
|
||||
/* <20>豸ID: t(x+1)_1 */
|
||||
y = 0;
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"%d",
|
||||
leakage.sub_device_data[sub_device_index].flash_data.modbus_id);
|
||||
|
||||
/* <20>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>: t(x+1)_2 */
|
||||
y = 1;
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"%s",
|
||||
leakage.sub_device_data[sub_device_index].flash_data.device_name);
|
||||
|
||||
/* ͨѶ״̬: t(x+1)_3 */
|
||||
y = 2;
|
||||
u8 comm_state = 0;
|
||||
for (ch = 0; ch < APP_LEAKAGE_SUB_DEVICE_CH_NUM; ch++)
|
||||
{
|
||||
if (leakage.sub_device_data[sub_device_index].ch_data[ch].state &
|
||||
APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT)
|
||||
{
|
||||
comm_state = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (comm_state)
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"<EFBFBD><EFBFBD>ʱ");
|
||||
}
|
||||
else
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
/* ͨ<><CDA8>1-4״̬ */
|
||||
for (ch = 0; ch < APP_LEAKAGE_SUB_DEVICE_CH_NUM; ch++)
|
||||
{
|
||||
u16 ch_state = leakage.sub_device_data[sub_device_index].ch_data[ch].state;
|
||||
u16 ch_distance = leakage.sub_device_data[sub_device_index].ch_data[ch].distance;
|
||||
|
||||
/* ©Һ״̬ */
|
||||
y = 3 + (ch * 3);
|
||||
if (ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"©Һ");
|
||||
}
|
||||
else
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
/* <20>ϴ<EFBFBD>״̬ */
|
||||
y = 4 + (ch * 3);
|
||||
if (ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_OPEN)
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"<EFBFBD>ϴ<EFBFBD>");
|
||||
}
|
||||
else
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
||||
}
|
||||
|
||||
/* ©Һλ<D2BA><CEBB> */
|
||||
y = 5 + (ch * 3);
|
||||
if (ch_state & APP_LEAKAGE_SUB_DEVICE_STATE_LEAKAGE)
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"%d",
|
||||
ch_distance);
|
||||
}
|
||||
else
|
||||
{
|
||||
len += gui_tjc_hmi_tx_text_display(x+1, y+1,
|
||||
(char *)&hmi_tx_buffer[len],
|
||||
"0");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 0x03: /* <20><>ҳ */
|
||||
{
|
||||
/* ʹ<><CAB9>֮ǰ<D6AE><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
region_idx = p_tjc_hmi->page.deliniter_main_index;
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ч */
|
||||
if (region_idx >= leakage.region_num)
|
||||
{
|
||||
return; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խ<EFBFBD><D4BD> */
|
||||
}
|
||||
|
||||
/* <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
region_data = &leakage.region_data[region_idx];
|
||||
|
||||
if(0x01 == p_data[0]) /* <20><>һҳ */
|
||||
{
|
||||
if(page_num - 1 <= p_tjc_hmi->page.detail_main_index)
|
||||
{
|
||||
p_tjc_hmi->page.detail_main_index = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.detail_main_index++;
|
||||
}
|
||||
}
|
||||
else /* <20><>һҳ */
|
||||
{
|
||||
if(0 == p_tjc_hmi->page.detail_main_index)
|
||||
{
|
||||
p_tjc_hmi->page.detail_main_index = page_num - 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
p_tjc_hmi->page.detail_main_index--;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>HMI<4D><49>Ļ */
|
||||
if (len > 0)
|
||||
{
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer, len);
|
||||
}
|
||||
}
|
||||
else if (HMI_PROTO_CMD_SET == cmd) /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||
{
|
||||
switch (opa)
|
||||
{
|
||||
case 0x01: /* */
|
||||
{
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*<2A><>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>*/
|
||||
static void gui_tjc_hmi_login_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
u16 len = 0,i;
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡflash<73>д洢<D0B4><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,ֻ<>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>flash<73><68>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void gui_tjc_hmi_history_alarm_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
u16 len = 0,i;
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡ<EFBFBD><C8A1>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϢӦ<CFA2>ô洢<C3B4><E6B4A2>flash<73>У<EFBFBD><D0A3><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸ID,<2C>豸<EFBFBD><E8B1B8><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ʼʱ<CABC><CAB1>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x03:/*<2A><>ҳ<EFBFBD><D2B3><EFBFBD>ܣ<EFBFBD>ÿҳ15<31><35><EFBFBD><EFBFBD>ʷ<EFBFBD><CAB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ý<EFBFBD><C3BD><EFBFBD>*/
|
||||
static void gui_tjc_hmi_tcp_config_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
u16 len = 0,i;
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2>p_data[0]=0x01Ϊ<31><CEAA>ȡ<EFBFBD><C8A1><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD>02Ϊ<32><CEAA>ȡĬ<C8A1>ϵ<EFBFBD>,<2C><><EFBFBD><EFBFBD>IP,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD>,DNS<4E><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>flash*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*<2A><>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A>豸<EFBFBD><E8B1B8><EFBFBD>ý<EFBFBD><C3BD><EFBFBD> */
|
||||
static void gui_tjc_hmi_device_config_send(u8 cmd,u8 opa,u8 *p_data)
|
||||
{
|
||||
u16 len = 0,i;
|
||||
|
||||
if(HMI_PROTO_CMD_GET == cmd)/*<2A><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><>ȡ<EFBFBD>Ѵ<EFBFBD><D1B4>ڵ<EFBFBD><DAB5>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>˿ڣ<CBBF><DAA3>豸ID,<2C>豸<EFBFBD><E8B1B8>,*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x03:/*<2A><>ҳ<EFBFBD><D2B3><EFBFBD>ܣ<EFBFBD>ÿҳ<C3BF><D2B3>ʾ8<CABE><38><EFBFBD>豸*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
else if(HMI_PROTO_CMD_SET == cmd)/*<2A><><EFBFBD><EFBFBD>*/
|
||||
{
|
||||
switch(opa)
|
||||
{
|
||||
case 0x01:/*<2A><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>flash<73><68>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
case 0x02:/*ɾ<><C9BE><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8>Ϣ<EFBFBD><CFA2>flash<73><68>ɾ<EFBFBD><C9BE>*/
|
||||
{
|
||||
|
||||
}break;
|
||||
default:return;
|
||||
}
|
||||
len = strlen((char *)hmi_tx_buffer);
|
||||
gui_tjc_hmi_data_send(hmi_tx_buffer,len);
|
||||
}
|
||||
}
|
||||
|
||||
/*<2A><>Ļָ<C4BB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static void gui_tjc_hmi_communication_data_analysis(u8 *p_data, u16 len, void *rx_uart)
|
||||
{
|
||||
u8 cmd,data,gui_id,opa,*p_offset_data;
|
||||
u16 i,modbus_crc16,check_crc16;
|
||||
/*<2A><><EFBFBD>Ȳ<EFBFBD><C8B2><EFBFBD>*/
|
||||
if(len < 5)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
/*<2A><><EFBFBD><EFBFBD>֡ͷ*/
|
||||
if(p_data[0] != HMI_PROTO_FRAME_HEADER1 || p_data[1] != HMI_PROTO_FRAME_HEADER2)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
/*У<><D0A3>λ*/
|
||||
check_crc16 = p_data[len-2] << 8 | p_data[len-1];
|
||||
modbus_crc16 = modbus_lib_crc16(p_data,len-2);
|
||||
modbus_crc16 = (modbus_crc16 >> 8) | (modbus_crc16 << 8);
|
||||
if(modbus_crc16 != check_crc16)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
/*CMD*/
|
||||
cmd = p_data[2];
|
||||
if(cmd != HMI_PROTO_CMD_GET || cmd != HMI_PROTO_CMD_SET)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
gui_id = p_data[3]; /*gui_id*/
|
||||
opa = p_data[4]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
p_offset_data = &p_data[5]; /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
p_rx_uart = (bsp_uart_t *)rx_uart; /*<2A><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>*/
|
||||
switch(gui_id)
|
||||
{
|
||||
case HMI_PROTO_GUI_MAIN :
|
||||
{
|
||||
gui_tjc_hmi_main_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_CURR_ALARM :
|
||||
{
|
||||
gui_tjc_hmi_curr_alarm_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_DETAIL_MAIN :
|
||||
{
|
||||
gui_tjc_hmi_detail_main_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_LOGIN :
|
||||
{
|
||||
//gui_tjc_hmi_main_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_HISTORY_ALARM :
|
||||
{
|
||||
gui_tjc_hmi_history_alarm_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_TCP_CONFIG :
|
||||
{
|
||||
gui_tjc_hmi_tcp_config_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_DEVICE_CONFIG :
|
||||
{
|
||||
gui_tjc_hmi_device_config_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
case HMI_PROTO_GUI_HELP :
|
||||
{
|
||||
//gui_tjc_hmi_help_send(cmd,opa,p_offset_data);
|
||||
}break;
|
||||
}
|
||||
}
|
||||
23
calib_board/usr/gui/gui_tjc_hmi.h
Normal file
23
calib_board/usr/gui/gui_tjc_hmi.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef _GUI_TJC_HMI_H_
|
||||
#define _GUI_TJC_HMI_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
/*ҳ<><D2B3>*/
|
||||
typedef struct
|
||||
{
|
||||
u8 main_index;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>*/
|
||||
u8 deliniter_main_index;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
u8 real_alarm_index;/*ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>*/
|
||||
u8 detail_main_index;/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><D2B3>*/
|
||||
}gui_tjc_hmi_page_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gui_tjc_hmi_page_t page;
|
||||
void (*init)(void);
|
||||
}gui_tjc_hmi_t;
|
||||
|
||||
extern gui_tjc_hmi_t tjc_hmi;
|
||||
|
||||
#endif
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "stdio.h"
|
||||
|
||||
#include "app.h"
|
||||
#include "os_timer.h"
|
||||
#include "app_timer.h"
|
||||
|
||||
#include "bsp_Uart.h"
|
||||
#include "bsp_74HC4067.h"
|
||||
@@ -36,7 +36,7 @@ static void proto_tdlas_rx_task(u8 *p_data,u16 len,void *other_data);
|
||||
static void proto_tdlas_control_fac_calib_data_get(u8 ch);
|
||||
|
||||
/*<2A><><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD>ڽ<EFBFBD><DABD>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD>*/
|
||||
static bsp_Uart_t *rx_uart = NULL;
|
||||
static bsp_uart_t *rx_uart = NULL;
|
||||
|
||||
proto_tdlas_t tdlas=
|
||||
{
|
||||
@@ -56,16 +56,16 @@ proto_tdlas_t tdlas=
|
||||
};
|
||||
|
||||
proto_tdlas_t *p_sensor = &tdlas;
|
||||
bsp_Uart_t *p_use_uart = &COM_Uart4;
|
||||
bsp_uart_t *p_use_uart = &com_uart4;
|
||||
|
||||
static void proto_tdlas_init(void)
|
||||
{
|
||||
COM_Uart4.Rx_DataAnalysis = p_sensor->rx_task;
|
||||
com_uart4.rx_data_analysis = p_sensor->rx_task;
|
||||
}
|
||||
|
||||
static void proto_tdlas_send(u8 *p_data,u16 len)
|
||||
{
|
||||
COM_Uart4.Send(&COM_Uart4,p_data,len);
|
||||
com_uart4.send(&com_uart4,p_data,len);
|
||||
}
|
||||
|
||||
static void proto_sensor_switch(u8 ch)
|
||||
@@ -324,7 +324,7 @@ static void proto_tdlas_rx_task(u8 *p_data,u16 len,void *other_data)
|
||||
|
||||
if( p_use_uart->relay.flag == 1)
|
||||
{
|
||||
p_use_uart->relay.uart->Send(p_use_uart->relay.uart,p_data,len);
|
||||
p_use_uart->relay.uart->send(p_use_uart->relay.uart,p_data,len);
|
||||
}
|
||||
|
||||
if(p_sensor->modbus_id != p_data[0])
|
||||
@@ -348,7 +348,7 @@ static void proto_tdlas_rx_task(u8 *p_data,u16 len,void *other_data)
|
||||
{
|
||||
p_rx_valid = &p_data[6];
|
||||
}
|
||||
rx_uart = (bsp_Uart_t *)other_data;
|
||||
rx_uart = (bsp_uart_t *)other_data;
|
||||
|
||||
p_sensor_sys->tx_time_out_count = 0;
|
||||
p_sensor_sys->state_error_flag &= (~(0x00000001 << PROTO_TDLAS_ERROR_FLAG_TIME_OUT));
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include "stdio.h"
|
||||
|
||||
#include "app.h"
|
||||
#include "os_timer.h"
|
||||
#include "app_timer.h"
|
||||
|
||||
#include "bsp_Uart.h"
|
||||
#include "bsp_Flash.h"
|
||||
@@ -33,26 +33,21 @@ proto_Modbus_t modbus_slave_ex=
|
||||
};
|
||||
|
||||
static proto_Modbus_t *p_modbus = &modbus_slave_ex;
|
||||
static bsp_Uart_t * rx_uart;
|
||||
static bsp_uart_t * p_rx_uart;
|
||||
|
||||
static void proto_modbus_communication_data_send(u8 *pData, u16 len)
|
||||
static void proto_modbus_communication_data_send(u8 *p_data, u16 len)
|
||||
{
|
||||
if(&COM_Uart1 == rx_uart)
|
||||
if(p_rx_uart != NULL)
|
||||
{
|
||||
COM_Uart1.Send(&COM_Uart1,pData,len);
|
||||
}
|
||||
else if(&COM_Uart4 == rx_uart)
|
||||
{
|
||||
COM_Uart4.Send(&COM_Uart4,pData,len);
|
||||
}
|
||||
|
||||
p_rx_uart->send(p_rx_uart,p_data,len);
|
||||
}
|
||||
}
|
||||
|
||||
static void proto_modbus_init(void)
|
||||
{
|
||||
p_modbus->id = Usr_Flash.FlashData.modbus_id;
|
||||
COM_Uart1.Rx_DataAnalysis = proto_modbus_communication_data_analysis;
|
||||
COM_Uart4.Rx_DataAnalysis = proto_modbus_communication_data_analysis;
|
||||
com_uart1.rx_data_analysis = proto_modbus_communication_data_analysis;
|
||||
com_uart4.rx_data_analysis = proto_modbus_communication_data_analysis;
|
||||
}
|
||||
static void proto_modbus_task(void)
|
||||
{
|
||||
@@ -82,7 +77,7 @@ static void proto_modbus_communication_data_analysis(u8 *pData, u16 len,void *ot
|
||||
goto Error;
|
||||
}
|
||||
*/
|
||||
rx_uart = (bsp_Uart_t*)other_data;
|
||||
p_rx_uart = (bsp_uart_t*)other_data;
|
||||
switch (modbus_analysis_data.func)
|
||||
{
|
||||
case 0x03:
|
||||
|
||||
Reference in New Issue
Block a user