用STM32烧录led流水灯

本教程详细介绍了如何使用STM32F103C8T6制作LED流水灯,包括GPIO端口初始化、C语言编程、程序烧录及波形仿真。通过修改现有工程,配置GPIO寄存器,实现LED灯的轮流闪烁,并提供了烧录软件和步骤,以及连线方法和运行结果展示。
摘要由CSDN通过智能技术生成

目录

一、制作要求

二、工程建立

三、编写程序

3.1、修改增加工程

3.2、仿真查看波形图

 四、程序烧录

4. 1、程序的烧录需要软件

4.2、连线方法

 4.3、运行结果

五、参考资料


一、制作要求

以 STM32最小系统核心板(STM32F103C8T6)+面板板+3只红绿蓝LED 搭建电路,使用GPIOB、GPIOC、GPIOD这3个端口控制LED灯,轮流闪烁,间隔时长1秒。

1)写出程序设计思路,包括GPIOx端口的各寄存器地址和详细参数;

2)C语言编程实现。

二、工程建立

由于工程对我们目前来说有点难了,所以直接借用网上现有的工程:

http://www.doyoung.net/YT/xx3.html(里面有很多基础的程序,可以直接调用就好)

三、编写程序

3.1、修改增加工程

首先将user里面的main里的内容删掉

编写一个led.c:

#include "led.h"
 
void LED_Init(void){ //LED灯的接口初始化
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //开启时钟
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				 //初始化管脚
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //设置输出模式,推挽输出模式
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		//设置输出速率
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOA,GPIO_Pin_0);					//将该管脚初始值定义为低电平
	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOB,GPIO_Pin_0);
	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;				 
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		
 GPIO_Init(GPIOC, &GPIO_InitStructure);					 
 GPIO_ResetBits(GPIOC,GPIO_Pin_15);
}
 
 

编写led.h来声明在led.c中创建的LED_Init(void)函数:

led.h

#include "stm32f10x.h"
void LED_Init(void);//初始化

编写好这两个文件之后,我们将这些导入工程中的Hardware中(双击Hardware然后找到刚刚保存的led.c,将其添加进Hardware)

编写main.c(流水灯的主要是让管脚输出在高低电平之间反复横跳,这样来实现灯的闪烁和熄灭)

main.c

#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
 
 
int main (void){//主程序
	RCC_Configuration(); //时钟设置
	LED_Init();
	while(1){		
	  GPIO_SetBits(GPIOA,GPIO_Pin_0);	//这个就是将PAO设置为高电平就是3.3V
	  delay_ms(400);
    GPIO_ResetBits(GPIOA,GPIO_Pin_0);//这个就是将PA0设置为低电平就是0V
    delay_ms(400);   						 
    GPIO_SetBits(GPIOB,GPIO_Pin_0);	//这个就是将PB0设置为高电平就是3.3V
    delay_ms(400); 
		GPIO_ResetBits(GPIOB,GPIO_Pin_0);//这个就是将PB0设置为低电平就是0V
    delay_ms(400);   
    GPIO_SetBits(GPIOC,GPIO_Pin_15);	//这个就是将PC15设置为高电平就是3.3V
    delay_ms(400); 
		GPIO_ResetBits(GPIOC,GPIO_Pin_15);//这个就是将PC15设置为低电平就是0V
    delay_ms(400);  
	}
}
 
 

3.2、仿真查看波形图

在仿真之前进行调制,首先点击“锤子”,然后选择Debug中的use simulator即可

 然后运行后调出逻辑窗口:

 然后添加我们想要查看的管脚号,需要将所有的Display Type改成bit:

然后进行仿真就可以得到波形图了:(如果波形都是一条直线的话,可以上下滑动鼠标,使波形缩小便于观察到波形的变化)

 四、程序烧录

4. 1、程序的烧录需要软件

FLY MUC和CH340驱动

https://blog.csdn.net/lengyuefeng212/article/details/104178386
STM32串口下载
mcuisp软件下载链接,百度网盘链接:https://pan.baidu.com/s/1WyvtnCJad_BqXbwTzhcofw
提取码:h2xc

 注意:在安装STM32驱动时需要将外部的串口接上电脑,在进行安装,不然容易安装失败

打开SETUP.EXE,提示INF文件为CH341SER.INF,我们不需要理会(341,340共用的),所以直接点安装即可!!

如果提示:预安装成功  则参考安装失败解决办法解决一下即可。
对于WIN8系统,安装失败,可参考此贴:http://www.openedv.com/posts/list/0/45091.htm

 

 

在插入USB后先去设备管理器看是否多出一个端口:

 在烧录的时候用FLY MUC:

 

4.2、连线方法

PA9---RXD

PA10---TXD

对应的GND--D

3V3--3

STM32的GND接面包板的负极,LED是长的一段连STM32对应的端口,短的一端连接面包板的负极。

 4.3、运行结果

 

 

 

五、参考资料

用STM32F103C8T6制作流水灯_txmnQAQ的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值