STM32实现LED的闪烁(硬件搭建+新建工程+代码编写)

一、硬件搭建

(一块面包板+STM32最小系统板+STLINK下载器+一个灯)

二、新建工程

STM32新建工程的步骤如下:

1、

2、新建一个文件夹

3、创建输入Project文件名

4、

5、这个窗口叉掉

6、新建3个文件夹

7、打开固有文件

8、找到启动文件

9、复制

10、放到之前新建的Stat文件夹下

11、在复制这3个文件

12、粘贴到Start文件夹下

13、复制这两个文件

14、粘贴到Start文件夹下

15、打开src全选复制

16、粘贴到Library文件夹下

17、然后打开inc全选复制,也粘贴到Library文件夹下

18、

19、

20、

21、粘贴到我们之前新建的User文件夹下

22、然后回到Keil软件,点击三个箱子

23、然后把默认的这个组叉掉

24、新建三个组

25、

26、添加文件

27、添加Library文件

28、添加User文件。然后点击OK就完成了

29、添加我们新建的文件夹的路径。点击OK完成

30、填写下面的英文

31、选择STLINK。然后点击Settings

32、

33、

34、编译没有报警,下载完成

测试代码如下:

#include "stm32f10x.h"                  // Device header

int main(void)
{
 while(1)
 {
   
 }
}

三、代码编写

1、使用STM32点亮一盏灯。代码如下:

#include "stm32f10x.h"                  // Device header
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;   //GPIO_InitTypeDef结构体
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
//	GPIO_SetBits(GPIOA,GPIO_Pin_0); //点亮一盏灯
	GPIO_ResetBits(GPIOA,GPIO_Pin_0); //熄灭一盏灯
while(1)
{

}
}

2、使用STM32控制一盏灯闪烁。代码如下:

#include "stm32f10x.h"                  // Device header

void Delay_ms1(int n)
{	
	int i,j;
	while(n--)
	{	 
	for(i=100;i>1;i--)
    for(j=100;j>1;j--);
	}
}

int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;   //GPIO_InitTypeDef结构体
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
	
    //GPIO_SetBits(GPIOA,GPIO_Pin_0); //点亮一盏灯
	//GPIO_ResetBits(GPIOA,GPIO_Pin_0); //熄灭一盏灯
	 //GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);//熄灭一盏灯
	
while(1)
{	
   GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_RESET);//点亮一盏灯
	Delay_ms1(500);
   GPIO_WriteBit(GPIOA,GPIO_Pin_0,Bit_SET);
 	Delay_ms1(500);
}
}

2、STM32流水灯设计。

硬件搭建如下:

代码如下:

#include "stm32f10x.h"                  // Device header
void Delay_ms(int n)
{	
	int i,j;
	while(n--)
	{	 
	for(i=100;i>1;i--)
    for(j=100;j>1;j--);
	}
}
int main(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;   //GPIO_InitTypeDef结构体
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&GPIO_InitStructure);
		
while(1)
{	
		
	GPIO_Write(GPIOA,~0x0001); //0000 0000 0000 0001
	Delay_ms(500);		
	GPIO_Write(GPIOA,~0x0002); //0000 0000 0000 0002
	Delay_ms(500);
	GPIO_Write(GPIOA,~0x0004); //0000 0000 0000 0004
	Delay_ms(500);		
	GPIO_Write(GPIOA,~0x0008); //0000 0000 0000 0008
	Delay_ms(500);
	GPIO_Write(GPIOA,~0x0010); //0000 0000 0000 0010
	Delay_ms(500);		
	GPIO_Write(GPIOA,~0x0020); //0000 0000 0000 0020
	Delay_ms(500);
	GPIO_Write(GPIOA,~0x0040); //0000 0000 0000 0040
	Delay_ms(500);		
	GPIO_Write(GPIOA,~0x0080); //0000 0000 0000 0080
	Delay_ms(500);
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值