這是目前我手頭的程序,但是不滿足設(shè)計的要求,以下是設(shè)計要求,請問我應(yīng)該怎么做本設(shè)計要求實現(xiàn)一個智能交通燈控制系統(tǒng)。該系統(tǒng)有自動與交警手動兩種方式。在自動方式下,系統(tǒng)可根據(jù)兩個方向的車流量調(diào)整兩個方向紅綠燈的持續(xù)時間;在手動方式下,交警可以控制每路信號燈的狀況。并且所有信息都可通過串口顯示在電腦上。
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; //綠燈閃爍計數(shù)
/* 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秒,(仿真暫且設(shè)為5s)
//【橫向通行階段2:綠燈閃爍(5次共1s)】
//橫向綠燈閃爍5次
for(times=0;times<5;times++){
HAL_GPIO_TogglePin(T_Green_GPIO_Port,T_Green_Pin); //翻轉(zhuǎn)綠燈
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秒,(仿真暫且設(shè)為5s)
//【縱向通行階段2:綠燈閃爍(5次共1s)】
//縱向綠燈閃爍5次
for(times=0;times<5;times++){
HAL_GPIO_TogglePin(M_Green_GPIO_Port,M_Green_Pin); //翻轉(zhuǎn)綠燈
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 */
}
|