STM32F103RCT6学习日记(三)跑马灯实验

该文介绍了如何进行一个简单的跑马灯实验,使用ALIENTEKMiniSTM32开发板,涉及硬件原理,主要是LED(DS0和DS1)的连接,以及软件设计,包括新建工程、配置GPIO为推挽输出模式的代码实现,以及在main函数中的LED控制逻辑。实验通过库函数实现,提供了LED初始化和延时函数的详细步骤。
摘要由CSDN通过智能技术生成

学习目标:

完成跑马灯实验


学习内容:

1,硬件原理

用到的硬件只有 LED(DS0 和 DS1)。其电路在 ALIENTEK MiniSTM32 开发板上默认 是已经连接好了的。DS0 接 PA8,DS1 接 PD2。所以在硬件上不需要动任何东西。其连接原理图如图所示

2,软件设计

跑马灯实验我们主要用到的固件库文件是:

新建一个 HARDWARE 的文 件夹,用来存储以后与硬件相关的代码,然后在 HARDWARE 文件夹下新建一个 LED 文件夹, 用来存放与 LED 相关的代码。

然后我们打开 USER 文件夹下的 LED.uvprojx 工程(如果是使用的上面新建的工程模板,那 么就是 Template. uvprojx,大家可以将其重命名为 LED. uvprojx),按 按钮新建一个文件,然后保存在 HARDWARE->LED 文件夹下面,保存为 led.c。在该文件中输入如下代码: 

此段代码是将PA8 和 PD2 配置为为推挽输出模式。

#include "led.h"
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE);	 //使能PA,PD端口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //LED0-->PA.8 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.8
 GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 输出高

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;	    		 //LED1-->PD.2 端口配置, 推挽输出
 GPIO_Init(GPIOD, &GPIO_InitStructure);	  				 //推挽输出 ,IO口速度为50MHz
 GPIO_SetBits(GPIOD,GPIO_Pin_2); 						 //PD.2 输出高 
}
 

 按同样的方法,新建一个 led.h 文件,也保存在 LED 文件夹下面。输入以下代码

#ifndef __LED_H
#define __LED_H
#include "sys.h"
//LED 端口定义
#define LED0 PAout(8) // PA8
#define LED1 PDout(2) // PD2
void LED_Init(void);//初始化 
#endif

不要忘了将led.c头文件的路径加入到工程中

在main函数中输入以下代码

#include "led.h"
#include "delay.h"
#include "sys.h"
//ALIENTEK miniSTM32 开发板实验 1
//跑马灯实验 
int main(void)
{
delay_init(); //延时函数初始化 
LED_Init(); //初始化与 LED 连接的硬件接口
while(1)
{ LED0=0; 
LED1=1;
delay_ms(300); //延时 300ms
LED0=1;
LED1=0;
delay_ms(300); //延时 300ms
}
}

最后编译工程

一个基于库函数的跑马灯实验就结束了

 


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值