使用uart1为host,收发初步正常。uart3无法通信,待排查
This commit is contained in:
parent
328adfb707
commit
6c74c2e095
@ -10,6 +10,7 @@ extern "C" {
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include "protocol.h"
|
||||
|
||||
#define HTTP_SERVER_PORT 80
|
||||
#define HTTP_SERVER_SOCKET 1
|
||||
|
@ -63,16 +63,18 @@ void Error_Handler(void);
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define DIR2_Pin GPIO_PIN_1
|
||||
#define DIR2_GPIO_Port GPIOA
|
||||
#define DIR1_Pin GPIO_PIN_2
|
||||
#define DIR1_GPIO_Port GPIOB
|
||||
#define LED_Pin GPIO_PIN_15
|
||||
#define LED_GPIO_Port GPIOE
|
||||
#define HOST_485EN_Pin GPIO_PIN_12
|
||||
#define HOST_485EN_GPIO_Port GPIOB
|
||||
#define NET_INT_Pin GPIO_PIN_8
|
||||
#define NET_INT_GPIO_Port GPIOD
|
||||
#define NET_RST_Pin GPIO_PIN_9
|
||||
#define NET_RST_GPIO_Port GPIOD
|
||||
#define NET_CS_Pin GPIO_PIN_10
|
||||
#define NET_CS_GPIO_Port GPIOD
|
||||
#define HOST_485EN_Pin GPIO_PIN_12
|
||||
#define HOST_485EN_GPIO_Port GPIOD
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
|
@ -56,15 +56,15 @@ void MX_GPIO_Init(void)
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(DIR2_GPIO_Port, DIR2_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOB, DIR1_Pin|HOST_485EN_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(GPIOD, NET_RST_Pin|NET_CS_Pin, GPIO_PIN_SET);
|
||||
|
||||
/*Configure GPIO pin Output Level */
|
||||
HAL_GPIO_WritePin(HOST_485EN_GPIO_Port, HOST_485EN_Pin, GPIO_PIN_RESET);
|
||||
|
||||
/*Configure GPIO pins : PE2 PE3 PE4 PE5
|
||||
PE6 PE7 PE8 PE9
|
||||
PE10 PE11 PE12 PE13
|
||||
@ -103,15 +103,22 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
HAL_GPIO_Init(DIR2_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : PB0 PB1 PB2 PB12
|
||||
PB3 PB4 PB5 PB6
|
||||
PB7 PB8 PB9 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_12
|
||||
|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|
||||
|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
|
||||
/*Configure GPIO pins : PB0 PB1 PB3 PB4
|
||||
PB5 PB6 PB7 PB8
|
||||
PB9 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3|GPIO_PIN_4
|
||||
|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8
|
||||
|GPIO_PIN_9;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : DIR1_Pin HOST_485EN_Pin */
|
||||
GPIO_InitStruct.Pin = DIR1_Pin|HOST_485EN_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 pin : LED_Pin */
|
||||
GPIO_InitStruct.Pin = LED_Pin;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
|
||||
@ -125,19 +132,21 @@ void MX_GPIO_Init(void)
|
||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||
HAL_GPIO_Init(NET_INT_GPIO_Port, &GPIO_InitStruct);
|
||||
|
||||
/*Configure GPIO pins : NET_RST_Pin NET_CS_Pin HOST_485EN_Pin */
|
||||
GPIO_InitStruct.Pin = NET_RST_Pin|NET_CS_Pin|HOST_485EN_Pin;
|
||||
/*Configure GPIO pins : NET_RST_Pin NET_CS_Pin */
|
||||
GPIO_InitStruct.Pin = NET_RST_Pin|NET_CS_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 : PD11 PD13 PD14 PD15
|
||||
PD0 PD1 PD2 PD3
|
||||
PD4 PD5 PD6 PD7 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15
|
||||
|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
|
||||
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
|
||||
/*Configure GPIO pins : PD11 PD12 PD13 PD14
|
||||
PD15 PD0 PD1 PD2
|
||||
PD3 PD4 PD5 PD6
|
||||
PD7 */
|
||||
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12|GPIO_PIN_13|GPIO_PIN_14
|
||||
|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2
|
||||
|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6
|
||||
|GPIO_PIN_7;
|
||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||
HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
|
||||
|
||||
|
@ -143,58 +143,6 @@ void http_server_init(void)
|
||||
listen(HTTP_SERVER_SOCKET);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// 三通阀结构体
|
||||
typedef struct {
|
||||
uint8_t angle1; // 阀门1角度 (120/210)
|
||||
uint8_t angle2; // 阀门2角度 (120/210)
|
||||
} ValveStatus;
|
||||
|
||||
// 泵结构体
|
||||
typedef struct {
|
||||
uint8_t status1; // 泵1运行状态 (停止/顺时针/逆时针)
|
||||
uint8_t status2; // 泵2运行状态 (停止/顺时针/逆时针)
|
||||
uint8_t speed1; // 泵1速度百分比 (0-100)
|
||||
uint8_t speed2; // 泵2速度百分比 (0-100)
|
||||
} PumpStatus;
|
||||
|
||||
// 设备状态结构体
|
||||
// 1.下挂设备在位状态,在位为1,否则为0,当前为气泡感应器,1个字节
|
||||
// 2.两个三通阀实时角度,每个角度占用1个字节,只能为210或120
|
||||
// 3.泵状态,1表示泵顺时针转动中,2表示泵逆时针转动中,0表示停止,两个泵共2个字节
|
||||
// 4.泵速度,2个字节,每个泵的速度占用一个字节,表示当前泵设定的速度百分比
|
||||
// 5.气泡感应器读值,1表示监测到气泡,0表示没有气泡,共1个字节
|
||||
// 6.急停按键状态,1个字节,1为按下,0为正常。
|
||||
// 7.错误码1个字节,用于监控当前系统总体状态,如通信异常、控制异常等<E5B8B8><E7AD89>,具体错误码待定
|
||||
// 8.初始化状态,1个字节, 0表示初始化执行中,1表示初始化执行成功,2表示初始化执行失败。
|
||||
typedef struct {
|
||||
uint8_t deviceStatus; // 下挂设备状态
|
||||
ValveStatus valves; // 两个三通阀状态
|
||||
PumpStatus pumps; // 两个泵状态
|
||||
uint8_t bubbleStatus; // 气泡状态
|
||||
uint8_t stopStatus; // 急停状态
|
||||
uint8_t errorCode; // 错误码
|
||||
uint8_t initStatus; // 初始化状态
|
||||
} DeviceStatus;
|
||||
DeviceStatus deviceStatus={
|
||||
.deviceStatus=1,
|
||||
.valves={
|
||||
.angle1=0,
|
||||
.angle2=0
|
||||
},
|
||||
.pumps={
|
||||
.status1=0,
|
||||
.status2=0,
|
||||
.speed1=60,
|
||||
.speed2=70
|
||||
},
|
||||
.bubbleStatus=0,
|
||||
.stopStatus=0,
|
||||
.errorCode=0,
|
||||
.initStatus=1
|
||||
};
|
||||
|
||||
// 发送JSON响应头
|
||||
static void send_json_response_header(uint8_t sn)
|
||||
{
|
||||
@ -286,7 +234,7 @@ static void handle_netconfig_request(uint8_t sn)
|
||||
|
||||
void http_server_task(void)
|
||||
{
|
||||
uint8_t buffer[2048];
|
||||
uint8_t buffer[256];
|
||||
uint16_t size;
|
||||
uint8_t status = getSn_SR(HTTP_SERVER_SOCKET);
|
||||
|
||||
|
@ -63,9 +63,11 @@ void SystemClock_Config(void);
|
||||
void transDataToHost(uint8_t *data, uint16_t len)
|
||||
{
|
||||
// 开启uart3 dma
|
||||
HAL_GPIO_WritePin(HOST_485EN_GPIO_Port, HOST_485EN_Pin, GPIO_PIN_SET);
|
||||
HAL_UART_Transmit(&huart3, data, len, 1000);
|
||||
HAL_GPIO_WritePin(HOST_485EN_GPIO_Port, HOST_485EN_Pin, GPIO_PIN_RESET);
|
||||
HAL_GPIO_WritePin(DIR1_GPIO_Port, DIR1_Pin, GPIO_PIN_SET);
|
||||
// HAL_Delay(100);
|
||||
HAL_UART_Transmit(&huart1, data, len, 1000);
|
||||
HAL_GPIO_WritePin(DIR1_GPIO_Port, DIR1_Pin, GPIO_PIN_RESET);
|
||||
// HAL_Delay(100);
|
||||
}
|
||||
/* USER CODE END PFP */
|
||||
|
||||
@ -108,7 +110,13 @@ int main(void)
|
||||
MX_USART2_UART_Init();
|
||||
MX_SPI2_Init();
|
||||
MX_USART3_UART_Init();
|
||||
|
||||
|
||||
/* USER CODE BEGIN 2 */
|
||||
memset(hostRxBuf, 0xff, HOST_BUFFER_SIZE);
|
||||
// 开启uart1中断和dma,使用uart1为host
|
||||
__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
|
||||
HAL_UART_Receive_DMA(&huart1, hostRxBuf, HOST_BUFFER_SIZE);
|
||||
if(W5500_Init() != 0) {
|
||||
while(1)
|
||||
{
|
||||
@ -124,8 +132,7 @@ int main(void)
|
||||
// http_test_request();
|
||||
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
|
||||
printf("Init success!\r\n");
|
||||
// transDataToHost("hello", 5);
|
||||
// runPumpDemo();
|
||||
runPumpDemo();
|
||||
/* USER CODE END 2 */
|
||||
|
||||
/* Infinite loop */
|
||||
@ -138,13 +145,11 @@ int main(void)
|
||||
http_server_task();
|
||||
|
||||
if (hostRxEnd == 1) {
|
||||
hostRxEnd = 0;
|
||||
transDataToHost(hostRxBuf, hostRxLen);
|
||||
printf("hostRxLen: %d\r\n", hostRxLen);
|
||||
ProcessHostCommand(hostRxBuf, hostRxLen);
|
||||
hostRxEnd = 0;
|
||||
HAL_UART_Receive_DMA(&huart1, hostRxBuf, HOST_BUFFER_SIZE);
|
||||
}
|
||||
// transDataToHost("hello\r\n", 7);
|
||||
// HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||
// HAL_Delay(100);
|
||||
}
|
||||
/* USER CODE END 3 */
|
||||
}
|
||||
@ -189,7 +194,6 @@ void SystemClock_Config(void)
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 4 */
|
||||
|
||||
/* USER CODE END 4 */
|
||||
|
||||
/**
|
||||
|
@ -266,7 +266,17 @@ void DMA1_Channel5_IRQHandler(void)
|
||||
void USART1_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART1_IRQn 0 */
|
||||
|
||||
if (__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET) {// idle标志被置
|
||||
__HAL_UART_CLEAR_IDLEFLAG(&huart1); //清除标志
|
||||
HAL_UART_DMAStop(&huart1);
|
||||
hostRxLen = HOST_BUFFER_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart1_rx);//得到已经接收的数据个数
|
||||
// if(hostRxLen >10)
|
||||
{//避免部分主机一次不能发送完整的帧致使的误触发空闲中断
|
||||
hostRxEnd = 1; //接受完成标志位置1
|
||||
// HAL_UART_DMAStop(&huart1);
|
||||
// HAL_UART_Receive_DMA(&huart1, hostRxBuf, HOST_BUFFER_SIZE);
|
||||
}
|
||||
}
|
||||
/* USER CODE END USART1_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart1);
|
||||
/* USER CODE BEGIN USART1_IRQn 1 */
|
||||
@ -280,7 +290,8 @@ void USART1_IRQHandler(void)
|
||||
void USART2_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART2_IRQn 0 */
|
||||
|
||||
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||
printf("HAL_UART2_IRQHandler\r\n");
|
||||
/* USER CODE END USART2_IRQn 0 */
|
||||
HAL_UART_IRQHandler(&huart2);
|
||||
/* USER CODE BEGIN USART2_IRQn 1 */
|
||||
@ -294,13 +305,18 @@ void USART2_IRQHandler(void)
|
||||
void USART3_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN USART3_IRQn 0 */
|
||||
// printf("USART3_IRQHandler\r\n");
|
||||
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
|
||||
if (__HAL_UART_GET_FLAG(&huart3, UART_FLAG_IDLE) != RESET) {// idle标志被置
|
||||
__HAL_UART_CLEAR_IDLEFLAG(&huart3); //清除标志
|
||||
// HAL_UART_DMAStop(&huart1);
|
||||
HAL_UART_DMAStop(&huart3);
|
||||
hostRxLen = HOST_BUFFER_SIZE - __HAL_DMA_GET_COUNTER(&hdma_usart3_rx);//得到已经接收的数据个数
|
||||
if(hostRxLen >10){//避免部分主机一次不能发送完整的帧致使的误触发空闲中断
|
||||
// printf("hostRxLen: %d\r\n", hostRxLen);
|
||||
// if(hostRxLen >10)
|
||||
{//避免部分主机一次不能发送完整的帧致使的误触发空闲中断
|
||||
hostRxEnd = 1; //接受完成标志位置1
|
||||
HAL_UART_DMAStop(&huart3);
|
||||
// HAL_UART_DMAStop(&huart3);
|
||||
// HAL_UART_Receive_DMA(&huart3, hostRxBuf, HOST_BUFFER_SIZE);
|
||||
}
|
||||
}
|
||||
/* USER CODE END USART3_IRQn 0 */
|
||||
|
@ -1 +1 @@
|
||||
Subproject commit 2877853cf132b4a87ffaa2eacbb76f021343cb78
|
||||
Subproject commit e4ee1c0eecad3dcc04ef071132ef67d852a0c974
|
@ -19,7 +19,8 @@
|
||||
"*.cpp": "cpp",
|
||||
"*.cxx": "cpp",
|
||||
"*.cc": "cpp",
|
||||
"*.html": "c"
|
||||
"*.html": "c",
|
||||
"cstdio": "c"
|
||||
},
|
||||
"[yaml]": {
|
||||
"editor.insertSpaces": true,
|
||||
|
45
f1CTL.ioc
45
f1CTL.ioc
@ -61,25 +61,26 @@ Mcu.Name=STM32F103V(C-D-E)Tx
|
||||
Mcu.Package=LQFP100
|
||||
Mcu.Pin0=OSC_IN
|
||||
Mcu.Pin1=OSC_OUT
|
||||
Mcu.Pin10=PB15
|
||||
Mcu.Pin11=PD8
|
||||
Mcu.Pin12=PD9
|
||||
Mcu.Pin13=PD10
|
||||
Mcu.Pin14=PD12
|
||||
Mcu.Pin15=PA9
|
||||
Mcu.Pin16=PA10
|
||||
Mcu.Pin17=PA13
|
||||
Mcu.Pin18=PA14
|
||||
Mcu.Pin19=VP_SYS_VS_Systick
|
||||
Mcu.Pin10=PB13
|
||||
Mcu.Pin11=PB14
|
||||
Mcu.Pin12=PB15
|
||||
Mcu.Pin13=PD8
|
||||
Mcu.Pin14=PD9
|
||||
Mcu.Pin15=PD10
|
||||
Mcu.Pin16=PA9
|
||||
Mcu.Pin17=PA10
|
||||
Mcu.Pin18=PA13
|
||||
Mcu.Pin19=PA14
|
||||
Mcu.Pin2=PA1
|
||||
Mcu.Pin20=VP_SYS_VS_Systick
|
||||
Mcu.Pin3=PA2
|
||||
Mcu.Pin4=PA3
|
||||
Mcu.Pin5=PE15
|
||||
Mcu.Pin6=PB10
|
||||
Mcu.Pin7=PB11
|
||||
Mcu.Pin8=PB13
|
||||
Mcu.Pin9=PB14
|
||||
Mcu.PinsNb=20
|
||||
Mcu.Pin5=PB2
|
||||
Mcu.Pin6=PE15
|
||||
Mcu.Pin7=PB10
|
||||
Mcu.Pin8=PB11
|
||||
Mcu.Pin9=PB12
|
||||
Mcu.PinsNb=21
|
||||
Mcu.ThirdPartyNb=0
|
||||
Mcu.UserConstants=
|
||||
Mcu.UserName=STM32F103VCTx
|
||||
@ -127,21 +128,25 @@ PB10.Mode=Asynchronous
|
||||
PB10.Signal=USART3_TX
|
||||
PB11.Mode=Asynchronous
|
||||
PB11.Signal=USART3_RX
|
||||
PB12.GPIOParameters=GPIO_Label
|
||||
PB12.GPIO_Label=HOST_485EN
|
||||
PB12.Locked=true
|
||||
PB12.Signal=GPIO_Output
|
||||
PB13.Mode=Full_Duplex_Master
|
||||
PB13.Signal=SPI2_SCK
|
||||
PB14.Mode=Full_Duplex_Master
|
||||
PB14.Signal=SPI2_MISO
|
||||
PB15.Mode=Full_Duplex_Master
|
||||
PB15.Signal=SPI2_MOSI
|
||||
PB2.GPIOParameters=GPIO_Label
|
||||
PB2.GPIO_Label=DIR1
|
||||
PB2.Locked=true
|
||||
PB2.Signal=GPIO_Output
|
||||
PD10.GPIOParameters=PinState,GPIO_Label
|
||||
PD10.GPIO_Label=NET_CS
|
||||
PD10.Locked=true
|
||||
PD10.PinState=GPIO_PIN_SET
|
||||
PD10.Signal=GPIO_Output
|
||||
PD12.GPIOParameters=GPIO_Label
|
||||
PD12.GPIO_Label=HOST_485EN
|
||||
PD12.Locked=true
|
||||
PD12.Signal=GPIO_Output
|
||||
PD8.GPIOParameters=GPIO_Label
|
||||
PD8.GPIO_Label=NET_INT
|
||||
PD8.Locked=true
|
||||
|
Loading…
Reference in New Issue
Block a user