运用keil,灯D1亮1秒,灭1秒,以此反复,完整代码
时间: 2023-10-09 07:09:15 浏览: 69
交通灯代码_交通灯;KEIL5_交通灯_
5星 · 资源好评率100%
以下是基于Keil的STM32单片机实现灯D1反复亮灭的完整代码:
```c
#include "stm32f10x.h"
void delay(int ms)
{
int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 20000; j++);
}
int main()
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
// 使能GPIOB端口的时钟
GPIO_InitTypeDef gpio;
gpio.GPIO_Mode = GPIO_Mode_Out_PP;
gpio.GPIO_Pin = GPIO_Pin_0;
gpio.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &gpio);
// 配置GPIOB.0为输出模式,最大输出速度为50MHz
while (1)
{
GPIO_SetBits(GPIOB, GPIO_Pin_0); // 点亮D1灯
delay(1000); // 延时1秒
GPIO_ResetBits(GPIOB, GPIO_Pin_0); // 关闭D1灯
delay(1000); // 延时1秒
}
}
```
代码功能解析:
1. `delay()`函数:实现延时功能,ms为需要延时的毫秒数。
2. `main()`函数:主函数中配置GPIOB.0为输出模式,并进行灯的反复亮灭操作。
3. `RCC_APB2PeriphClockCmd()`函数:用于使能GPIOB端口的时钟,将其设置为可用。
4. `GPIO_Init()`函数:用于初始化GPIO端口,使其能够正常工作。
5. `GPIO_SetBits()`函数:用于点亮D1灯,即将GPIOB.0输出高电平。
6. `GPIO_ResetBits()`函数:用于关闭D1灯,即将GPIOB.0输出低电平。
该代码的实现思路比较简单,通过不断的点亮和关闭D1灯,来实现灯的反复亮灭。同时,为了避免程序执行过快,导致灯的亮灭速度过快,使用了`delay()`函数来进行延时操作。
阅读全文