diff --git a/.gitignore b/.gitignore index 0ba4c12..915fbcd 100644 --- a/.gitignore +++ b/.gitignore @@ -48,3 +48,5 @@ JLinkLog.txt /MDK-ARM/DebugConfig/ /MDK-ARM/Output/ /~$ds18b20_locations.xlsx +/~$PY32F002A_Pins.xlsx +/~$PY32F002B_Pins.xlsx diff --git a/PY32F002A_Pins.xlsx b/PY32F002A_Pins.xlsx new file mode 100644 index 0000000..5934109 Binary files /dev/null and b/PY32F002A_Pins.xlsx differ diff --git a/PY32F002B_Pins.xlsx b/PY32F002B_Pins.xlsx new file mode 100644 index 0000000..6224724 Binary files /dev/null and b/PY32F002B_Pins.xlsx differ diff --git a/py_project/Core/Dallas/ds18b20_driver.h b/py_project/Core/Dallas/ds18b20_driver.h index b5cf8d8..5baf153 100644 --- a/py_project/Core/Dallas/ds18b20_driver.h +++ b/py_project/Core/Dallas/ds18b20_driver.h @@ -22,8 +22,14 @@ #include "onewire.h" /* I/O Port ------------------------------------------------------------------*/ +#ifdef PY32F002Bx5 #define DS_Pin GPIO_PIN_0 #define DS_GPIO_Port GPIOB +#endif +#ifdef PY32F002Ax5 +#define DS_Pin GPIO_PIN_3 +#define DS_GPIO_Port GPIOA +#endif /* Data Structure ------------------------------------------------------------*/ #define DS18B20_DEVICE_AMOUNT 30 diff --git a/py_project/Core/Dallas/ow_port.c b/py_project/Core/Dallas/ow_port.c index 89cfecc..e1e4592 100644 --- a/py_project/Core/Dallas/ow_port.c +++ b/py_project/Core/Dallas/ow_port.c @@ -8,6 +8,13 @@ #include "onewire.h" #include "tim.h" +#ifdef PY32F002Bx5 +#define PIN_NUMB 0 +#endif +#ifdef PY32F002Ax5 +#define PIN_NUMB 3 +#endif + /** * @brief The internal function is used as gpio pin mode * @param OW OneWire HandleTypedef @@ -18,11 +25,11 @@ void OneWire_Pin_Mode(OneWire_t* OW, PinMode Mode) #ifdef CMSIS_Driver if(Mode == Input) { - OW->DataPort->MODER &= ~((GPIO_MODER_MODE0_Msk) << 0); - OW->DataPort->MODER |= (GPIO_MODE_INPUT << (0+2)); + OW->DataPort->MODER &= ~((GPIO_MODER_MODE0_Msk) << PIN_NUMB); + OW->DataPort->MODER |= (GPIO_MODE_INPUT << (PIN_NUMB)); }else{ - OW->DataPort->MODER &= ~((GPIO_MODER_MODE0_Msk) << 0); - OW->DataPort->MODER |= (GPIO_MODE_OUTPUT_PP << 0); + OW->DataPort->MODER &= ~((GPIO_MODER_MODE0_Msk) << PIN_NUMB); + OW->DataPort->MODER |= (GPIO_MODE_OUTPUT_PP << PIN_NUMB); } #else #ifdef LL_Driver diff --git a/py_project/Core/Modbus/interface_config.h b/py_project/Core/Modbus/interface_config.h index c877134..058de92 100644 --- a/py_project/Core/Modbus/interface_config.h +++ b/py_project/Core/Modbus/interface_config.h @@ -39,6 +39,9 @@ #define RS_TIM_DeInit HAL_TIM_Base_MspDeInit #define rs_huart huart1 #define rs_htim htim14 + +#define RS_EnableReceive() GPIOB->ODR |= GPIO_PIN_3 +#define RS_EnableTransmit() GPIOB->ODR &= ~GPIO_PIN_3 /** * @brief Поменять комманды 0x03 и 0x04 местами (для LabView терминалки от двигателей) * @details Терминалка от двигателей использует для чтения регистров комманду R_HOLD_REGS вместо R_IN_REGS diff --git a/py_project/Core/Src/gpio.c b/py_project/Core/Src/gpio.c index 6a01b7e..f3433f3 100644 --- a/py_project/Core/Src/gpio.c +++ b/py_project/Core/Src/gpio.c @@ -68,5 +68,15 @@ void MX_GPIO_Init(void) GPIOA->OSPEEDR |= (GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED1_Pos) | (GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED4_Pos) | (GPIO_SPEED_FREQ_LOW << GPIO_OSPEEDR_OSPEED5_Pos); + +#ifdef PY32F002Bx5 + /*Configure LED GPIO pin : PB3 (Receive Enable) */ + /* PA1, PA4, PA5 */ + GPIOB->MODER &= ~(GPIO_MODER_MODE3); + GPIOB->MODER |= (GPIO_MODE_OUTPUT_PP << GPIO_MODER_MODE3_Pos); + GPIOB->PUPDR &= ~(GPIO_PUPDR_PUPD3); + GPIOB->PUPDR |= (GPIO_NOPULL << GPIO_PUPDR_PUPD3_Pos); + GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED3_Pos); +#endif } /************************ (C) COPYRIGHT Puya *****END OF FILE******************/ diff --git a/py_project/Core/Src/usart.c b/py_project/Core/Src/usart.c index fde94bc..54784d8 100644 --- a/py_project/Core/Src/usart.c +++ b/py_project/Core/Src/usart.c @@ -67,7 +67,8 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) /* USART1 clock enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); - + +#ifdef PY32F002Bx5 /* GPIO initialization PB04:TX, PB05:RX @@ -89,17 +90,26 @@ void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) GPIOB->OSPEEDR |= (GPIO_SPEED_FREQ_HIGH << GPIO_OSPEEDR_OSPEED5_Pos); GPIOB->AFR[0] &= ~(0xF << GPIO_AFRL_AFSEL5_Pos); GPIOB->AFR[0] |= (GPIO_AF1_USART1 << GPIO_AFRL_AFSEL5_Pos); +#endif +#ifdef PY32F002Ax5 + GPIOA->MODER &= ~GPIO_MODER_MODE10; // PA2 + GPIOA->MODER |= GPIO_MODER_MODE10_1; // (AF) + GPIOA->OTYPER |= GPIO_OTYPER_OT10; // Open-Drain + GPIOA->PUPDR &= ~GPIO_PUPDR_PUPD10; // + GPIOA->PUPDR |= GPIO_PUPDR_PUPD10_0; // + GPIOA->AFR[1] &= ~(0xF << GPIO_AFRH_AFSEL10_Pos); + GPIOA->AFR[1] |= (GPIO_AF1_USART1 << GPIO_AFRH_AFSEL10_Pos); +#endif /* USART1 interrupt Init */ HAL_NVIC_SetPriority(USART1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(USART1_IRQn); - /* USER CODE BEGIN USART1_MspInit 1 */ + /* USER CODE BEGIN USART1_MspInit 1 */ - /* USER CODE END USART1_MspInit 1 */ + /* USER CODE END USART1_MspInit 1 */ } } - /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ diff --git a/py_project/MDK-ARM/PY32Dallas.uvoptx b/py_project/MDK-ARM/PY32Dallas.uvoptx index ee57f74..6ee6c5d 100644 --- a/py_project/MDK-ARM/PY32Dallas.uvoptx +++ b/py_project/MDK-ARM/PY32Dallas.uvoptx @@ -987,7 +987,7 @@ Drivers/PY32F002B_HAL_Driver - 1 + 0 0 0 0 @@ -1067,7 +1067,7 @@ Drivers/PY32F002A_HAL_Driver - 1 + 0 0 0 0