STM32交通灯设计源代码
时间: 2023-09-04 08:07:19 浏览: 191
交通灯源代码
5星 · 资源好评率100%
以下是STM32交通灯设计的基本框架代码:
```
#include "stm32f10x.h"
#define RED_LED_PIN GPIO_Pin_12
#define YELLOW_LED_PIN GPIO_Pin_13
#define GREEN_LED_PIN GPIO_Pin_14
void delay(uint32_t ms)
{
// 使用 SysTick 计时器延时
SysTick->LOAD = 72000 * ms;
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
while((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
}
int main(void)
{
// 初始化 GPIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin = RED_LED_PIN | YELLOW_LED_PIN | GREEN_LED_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
// 红灯亮,绿灯灭
GPIO_SetBits(GPIOB, RED_LED_PIN);
GPIO_ResetBits(GPIOB, YELLOW_LED_PIN | GREEN_LED_PIN);
delay(5000); // 延时 5 秒
// 红灯亮,黄灯亮,绿灯灭
GPIO_SetBits(GPIOB, RED_LED_PIN | YELLOW_LED_PIN);
GPIO_ResetBits(GPIOB, GREEN_LED_PIN);
delay(2000); // 延时 2 秒
// 绿灯亮,红灯灭
GPIO_SetBits(GPIOB, GREEN_LED_PIN);
GPIO_ResetBits(GPIOB, RED_LED_PIN | YELLOW_LED_PIN);
delay(5000); // 延时 5 秒
// 绿灯亮,黄灯亮,红灯灭
GPIO_SetBits(GPIOB, GREEN_LED_PIN | YELLOW_LED_PIN);
GPIO_ResetBits(GPIOB, RED_LED_PIN);
delay(2000); // 延时 2 秒
}
}
```
这个代码可以让交通灯不断地循环红灯亮 5 秒,红黄灯亮 2 秒,绿灯亮 5 秒,绿黄灯亮 2 秒。你可以根据需要进行修改。
阅读全文