stm32f103c3t8按键控制流水灯
时间: 2023-09-05 20:08:40 浏览: 149
以下是使用stm32f103c3t8控制流水灯的代码,其中包括按键控制:
```
#include "stm32f10x.h"
void delay(int n)
{
for(int i=0;i<n;i++);
}
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin = 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_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
while(1)
{
if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0) //按键按下
{
GPIO_SetBits(GPIOB, GPIO_Pin_0); //点亮第一个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_0); //熄灭第一个LED
GPIO_SetBits(GPIOB, GPIO_Pin_1); //点亮第二个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_1); //熄灭第二个LED
GPIO_SetBits(GPIOB, GPIO_Pin_2); //点亮第三个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_2); //熄灭第三个LED
GPIO_SetBits(GPIOB, GPIO_Pin_3); //点亮第四个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_3); //熄灭第四个LED
GPIO_SetBits(GPIOB, GPIO_Pin_4); //点亮第五个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_4); //熄灭第五个LED
GPIO_SetBits(GPIOB, GPIO_Pin_5); //点亮第六个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_5); //熄灭第六个LED
GPIO_SetBits(GPIOB, GPIO_Pin_6); //点亮第七个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_6); //熄灭第七个LED
GPIO_SetBits(GPIOB, GPIO_Pin_7); //点亮第八个LED
delay(50000);
GPIO_ResetBits(GPIOB, GPIO_Pin_7); //熄灭第八个LED
}
}
}
```
该代码使用GPIOA的第0个引脚作为按键输入,GPIOB的0-7个引脚作为流水灯输出。当按键按下时,依次点亮GPIOB的8个引脚,形成流水灯效果。每个LED点亮50000个循环后熄灭。
阅读全文