这是目前我手头的程序,但是不满足设计的要求,以下是设计要求,请问我应该怎么做本设计要求实现一个智能交通灯控制系统。该系统有自动与交警手动两种方式。在自动方式下,系统可根据两个方向的车流量调整两个方向红绿灯的持续时间;在手动方式下,交警可以控制每路信号灯的状况。并且所有信息都可通过串口显示在电脑上。
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
/* USER CODE BEGIN 2 */
int times; //绿灯闪烁计数
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
//先横向通行,再纵向通行
//【横向通行】
//【横向通行阶段1:通行(5s)】
//T横向绿亮,红黄灭,上拉需要反
HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(T_Red_GPIO_Port, T_Red_Pin, GPIO_PIN_SET);
//M纵向红亮,红黄灭
HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(M_Red_GPIO_Port, M_Red_Pin, GPIO_PIN_RESET);
HAL_Delay(5000); //通行5秒,(仿真暂且设为5s)
//【横向通行阶段2:绿灯闪烁(5次共1s)】
//横向绿灯闪烁5次
for(times=0;times<5;times++){
HAL_GPIO_TogglePin(T_Green_GPIO_Port,T_Green_Pin); //翻转绿灯
HAL_Delay(150); //每150ms闪烁1次
}
//【横向通行阶段3:变黄灯(1s)】
//T横向黄亮,红绿灭,上拉需要反
HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_RESET);
HAL_Delay(1000); //黄灯1秒
//【纵向通行】
//【纵向通行阶段1:通行(5s)】
//M纵向绿亮,红黄灭,上拉需要反
HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_RESET);
HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(M_Red_GPIO_Port, M_Red_Pin, GPIO_PIN_SET);
//T横向红亮,红黄灭
HAL_GPIO_WritePin(T_Green_GPIO_Port, T_Green_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(T_Yellow_GPIO_Port, T_Yellow_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(T_Red_GPIO_Port, T_Red_Pin, GPIO_PIN_RESET);
HAL_Delay(5000); //通行5秒,(仿真暂且设为5s)
//【纵向通行阶段2:绿灯闪烁(5次共1s)】
//纵向绿灯闪烁5次
for(times=0;times<5;times++){
HAL_GPIO_TogglePin(M_Green_GPIO_Port,M_Green_Pin); //翻转绿灯
HAL_Delay(150); //每200ms闪烁1次
}
//【纵向通行阶段3:变黄灯(1s)】
//纵向黄亮,红绿灭,上拉需要反
HAL_GPIO_WritePin(M_Green_GPIO_Port, M_Green_Pin, GPIO_PIN_SET);
HAL_GPIO_WritePin(M_Yellow_GPIO_Port, M_Yellow_Pin, GPIO_PIN_RESET);
HAL_Delay(1000); //黄灯1秒
}
/* USER CODE END 3 */
}
|