STM32F103C8T6标准库流水灯

首先需要创建工程,我们创建工程可以参考其他人的博客,或者用已经有的工程,在已经创建好的工程里直接编程。

创建工程可参考如下    我的建议是直接下载创建好的工程,没必要自己创建

STM32F103C8T6-新建工程_stm32f103c8 创建工程-CSDN博客

打开我们的工程,直接开始编写代码

在main函数中添加头文件

#include "stm32f10x.h"

 然后开始编写main 函数

在mian函数中

首先我们需要开启时钟,

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);

 上面代码是开启GPIOA与GPIOC的时钟。

定义一个结构体变量,来编写引脚的模式

 GPIO_InitTypeDef  GPIO_InitStructure;	
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7);	

我开启的PA6,PA5,PA7引脚。

以上代码就是开启引脚

我们还需要编写一个延时函数

如下所示,我们是通过程序延时,下面的延时并不准确,只是粗略的延时

void delay__ms()
{
	int i=0,j=0,k=0;
		 for( i=0;i<1000;i++)
	 {	 
		 for( j=0;j<1000;i++)
		 { 
			 for( k=0;k<5;k++);
		 }
	 }
	 
}

然后我们需要对主函数的进行编写

在while中编写如下代码

while(1)
	{
		
		GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5); //LED0输出低
		GPIO_ResetBits(GPIOA,GPIO_Pin_7);//LED1输出高
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_7|GPIO_Pin_5);
		GPIO_ResetBits(GPIOA,GPIO_Pin_6);//LED0输出高
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_5);
	}

上面的代码就是对电灯进行编写,死循环。

总体代码如下

        

#include "stm32f10x.h"
#include "sys.h"

void delay__ms()
{
	int i=0,j=0,k=0;
		 for( i=0;i<1000;i++)
	 {	 
		 for( j=0;j<1000;i++)
		 { 
			 for( k=0;k<5;k++);
		 }
	 }
	 
}
 int main(void)
 {	
	  
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);	
	
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_7);	
	while(1)
	{
		
		GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_5); //LED0输出低
		GPIO_ResetBits(GPIOA,GPIO_Pin_7);//LED1输出高
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_7|GPIO_Pin_5);
		GPIO_ResetBits(GPIOA,GPIO_Pin_6);//LED0输出高
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_6|GPIO_Pin_7);
		GPIO_ResetBits(GPIOA,GPIO_Pin_5);
		delay__ms();
		GPIO_SetBits(GPIOA,GPIO_Pin_5);
	}
 }

上面的代码就可以完成流水灯。

看到这里,点个赞吧,有什么问题可以直接私信我,我都会解答的

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值