/* USER CODE BEGIN Header */ /** ****************************************************************************** * @file : main.h * @brief : Header for main.c file. * This file contains the common defines of the application. ****************************************************************************** * @attention * * Copyright (c) 2024 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 __MAIN_H #define __MAIN_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "stm32f4xx_hal.h" #include "stm32f4xx_ll_adc.h" #include "stm32f4xx_ll_dma.h" #include "stm32f4xx_ll_rcc.h" #include "stm32f4xx_ll_bus.h" #include "stm32f4xx_ll_system.h" #include "stm32f4xx_ll_exti.h" #include "stm32f4xx_ll_cortex.h" #include "stm32f4xx_ll_utils.h" #include "stm32f4xx_ll_pwr.h" #include "stm32f4xx_ll_spi.h" #include "stm32f4xx_ll_tim.h" #include "stm32f4xx_ll_usart.h" #include "stm32f4xx_ll_gpio.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include "stm32f4xx_it.h" #include #include "adc.h" #include "spi.h" #include "tim.h" #include "usart.h" #include "gpio.h" #include "Modbus.h" #include "ads1256.h" #include "hc165.h" #include "hc595.h" #include "dac7311.h" #include "ms5803.h" #include "laser.h" #include "mf.h" /* USER CODE END Includes */ /* Exported types ------------------------------------------------------------*/ /* USER CODE BEGIN ET */ /* USER CODE END ET */ /* Exported constants --------------------------------------------------------*/ /* USER CODE BEGIN EC */ /* USER CODE END EC */ /* Exported macro ------------------------------------------------------------*/ /* USER CODE BEGIN EM */ /* USER CODE END EM */ /* Exported functions prototypes ---------------------------------------------*/ void Error_Handler(void); /* USER CODE BEGIN EFP */ void delay_us(uint32_t nus); void delay_ms(uint16_t nms); void delay_tick(uint32_t ticks); /* USER CODE END EFP */ /* Private defines -----------------------------------------------------------*/ #define SPI1_NSS4_Pin LL_GPIO_PIN_2 #define SPI1_NSS4_GPIO_Port GPIOE #define SPI1_NSS3_Pin LL_GPIO_PIN_3 #define SPI1_NSS3_GPIO_Port GPIOE #define SPI1_NSS2_Pin LL_GPIO_PIN_4 #define SPI1_NSS2_GPIO_Port GPIOE #define SPI1_NSS1_Pin LL_GPIO_PIN_5 #define SPI1_NSS1_GPIO_Port GPIOE #define SENSOR_SELECT_Pin LL_GPIO_PIN_6 #define SENSOR_SELECT_GPIO_Port GPIOE #define PC13_SPI8_Pin LL_GPIO_PIN_13 #define PC13_SPI8_GPIO_Port GPIOC #define PC14_SPI8_Pin LL_GPIO_PIN_14 #define PC14_SPI8_GPIO_Port GPIOC #define PC15_SPI8_Pin LL_GPIO_PIN_15 #define PC15_SPI8_GPIO_Port GPIOC #define HC165_DAT_Pin LL_GPIO_PIN_0 #define HC165_DAT_GPIO_Port GPIOC #define HC165_INH_Pin LL_GPIO_PIN_1 #define HC165_INH_GPIO_Port GPIOC #define HC165_LD_Pin LL_GPIO_PIN_2 #define HC165_LD_GPIO_Port GPIOC #define HC165_CLK_Pin LL_GPIO_PIN_3 #define HC165_CLK_GPIO_Port GPIOC #define ADC_IN0_AO1_Pin LL_GPIO_PIN_0 #define ADC_IN0_AO1_GPIO_Port GPIOA #define ADC_IN1_A02_Pin LL_GPIO_PIN_1 #define ADC_IN1_A02_GPIO_Port GPIOA #define ADC_IN2_RT_Pin LL_GPIO_PIN_2 #define ADC_IN2_RT_GPIO_Port GPIOA #define PA3_SPI8_Pin LL_GPIO_PIN_3 #define PA3_SPI8_GPIO_Port GPIOA #define PA4_SPI8_Pin LL_GPIO_PIN_4 #define PA4_SPI8_GPIO_Port GPIOA #define HC595_SER_Pin LL_GPIO_PIN_4 #define HC595_SER_GPIO_Port GPIOC #define HC595_OE_Pin LL_GPIO_PIN_5 #define HC595_OE_GPIO_Port GPIOC #define HC595_RCLK_Pin LL_GPIO_PIN_0 #define HC595_RCLK_GPIO_Port GPIOB #define HC595_SRCLK_Pin LL_GPIO_PIN_1 #define HC595_SRCLK_GPIO_Port GPIOB #define HC595_SRCLR_Pin LL_GPIO_PIN_2 #define HC595_SRCLR_GPIO_Port GPIOB #define DO1_Pin LL_GPIO_PIN_7 #define DO1_GPIO_Port GPIOE #define DO2_Pin LL_GPIO_PIN_8 #define DO2_GPIO_Port GPIOE #define DO3_Pin LL_GPIO_PIN_9 #define DO3_GPIO_Port GPIOE #define DO4_Pin LL_GPIO_PIN_10 #define DO4_GPIO_Port GPIOE #define DO5_Pin LL_GPIO_PIN_11 #define DO5_GPIO_Port GPIOE #define DO6_Pin LL_GPIO_PIN_12 #define DO6_GPIO_Port GPIOE #define DO7_Pin LL_GPIO_PIN_13 #define DO7_GPIO_Port GPIOE #define DO8_Pin LL_GPIO_PIN_14 #define DO8_GPIO_Port GPIOE #define PE15_SPI7_Pin LL_GPIO_PIN_15 #define PE15_SPI7_GPIO_Port GPIOE #define PB10_SPI7_Pin LL_GPIO_PIN_10 #define PB10_SPI7_GPIO_Port GPIOB #define PB11_SPI7_Pin LL_GPIO_PIN_11 #define PB11_SPI7_GPIO_Port GPIOB #define AO1_SPI5_MOSI_Pin LL_GPIO_PIN_11 #define AO1_SPI5_MOSI_GPIO_Port GPIOD #define AO1_SPI5_SCK_Pin LL_GPIO_PIN_12 #define AO1_SPI5_SCK_GPIO_Port GPIOD #define AO1_SPI5_NSS_Pin LL_GPIO_PIN_13 #define AO1_SPI5_NSS_GPIO_Port GPIOD #define PD14_SPI7_Pin LL_GPIO_PIN_14 #define PD14_SPI7_GPIO_Port GPIOD #define PD15_SPI7_Pin LL_GPIO_PIN_15 #define PD15_SPI7_GPIO_Port GPIOD #define AO2_SPI6_MOSI_Pin LL_GPIO_PIN_8 #define AO2_SPI6_MOSI_GPIO_Port GPIOC #define AO2_SPI6_SCK_Pin LL_GPIO_PIN_9 #define AO2_SPI6_SCK_GPIO_Port GPIOC #define AO2_SPI6_NSS_Pin LL_GPIO_PIN_8 #define AO2_SPI6_NSS_GPIO_Port GPIOA #define SWDIO_Pin LL_GPIO_PIN_13 #define SWDIO_GPIO_Port GPIOA #define SWCLK_Pin LL_GPIO_PIN_14 #define SWCLK_GPIO_Port GPIOA #define ADS1256_DRDY_Pin LL_GPIO_PIN_0 #define ADS1256_DRDY_GPIO_Port GPIOD #define ADS1256_PDWN_Pin LL_GPIO_PIN_1 #define ADS1256_PDWN_GPIO_Port GPIOD #define CH395Q_RST_Pin LL_GPIO_PIN_2 #define CH395Q_RST_GPIO_Port GPIOD #define CH395Q_INT_Pin LL_GPIO_PIN_3 #define CH395Q_INT_GPIO_Port GPIOD #define CH395Q_RSTI_Pin LL_GPIO_PIN_4 #define CH395Q_RSTI_GPIO_Port GPIOD #define SPI1_NSS8_Pin LL_GPIO_PIN_7 #define SPI1_NSS8_GPIO_Port GPIOD #define SPI1_NSS7_Pin LL_GPIO_PIN_3 #define SPI1_NSS7_GPIO_Port GPIOB #define SPI1_NSS6_Pin LL_GPIO_PIN_4 #define SPI1_NSS6_GPIO_Port GPIOB #define SPI1_NSS5_Pin LL_GPIO_PIN_5 #define SPI1_NSS5_GPIO_Port GPIOB #define ENCODER_A_Pin LL_GPIO_PIN_6 #define ENCODER_A_GPIO_Port GPIOB #define ENCODER_B_Pin LL_GPIO_PIN_7 #define ENCODER_B_GPIO_Port GPIOB /* USER CODE BEGIN Private defines */ extern int i; #define osel_memset _memset #define osel_memcmp _memcmp #define osel_memcpy memcpyL #define osel_memcpyr memcpyR static inline void _memset(uint8_t *dst, uint8_t value, uint16_t size) { while (size--) { *dst++ = value; } } static inline int8_t _memcmp(const uint8_t *dst, const uint8_t *src, uint16_t size) { while (size--) { if (*dst++ != *src++) { return -1; } } return 0; } static inline void memcpyL(uint8_t *dst, const uint8_t *src, uint16_t size) { while (size--) { *dst++ = *src++; } } static inline void memcpyR(uint8_t *dst, const uint8_t *src, uint16_t size) { dst = dst + (size - 1); while (size--) { *dst-- = *src++; } } // 比较2个数组是否相等 #define IsEqual(arr1, arr2, n) ({ \ int _equal = 1; \ for (int _i = 0; _i < n; _i++) \ { \ if (arr1[_i] != arr2[_i]) \ { \ _equal = 0; \ break; \ } \ } \ _equal; \ }) // ASSIC码转换为16进制 #define CHAR_TO_NUM(c, num) \ do \ { \ if ((c) >= '0' && (c) <= '9') \ { \ (num) = (c) - '0'; \ } \ else \ { \ num = 0; \ } \ } while (0) /* USER CODE END Private defines */ #ifdef __cplusplus } #endif #endif /* __MAIN_H */