STM32--跑马灯例程

概述

我们在编写跑马灯实验时点亮一个小灯需要四步:

1.声明GPIO_InitTypeDef结构体

2.使能 APB2 总线上的 GPIOC时钟

3.赋值GPIO_InitTypeDef结构体的三个成员,通过GPIO_Init函数初始化GPIO的某一个端口

4.GPIO_SetBits和GPIO_ResetBits两个函数拉高或者拉低I/O口实现小灯的亮灭

1.I/O时钟的调用

首先,我们在编写跑马灯例程时,要在新建的工程文件中找到FWLIB(有的也简称为LIB)中找到gpio.c这个文件,这里需要注意的是gpio.c必须要和miss.c和rcc.c一起共存,我们从其中找到RCC_APB2Periph_GPIOX,我们要通过不同的IO组调用时钟使能函数不同来实现相应的功能

2.初始化IO口模式,调用函数

我们要通过LED.h编写GPIO_Init()来初始化IO口模式`

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)

3.操作IO口,输出高低电平

我这里以STM32F103ZET6来说明,在操作IO口时首先要根据原理图的引脚之间的名称进行的定义,我的两个LED灯分别连接着MCU的B5与E5.
在多数情况下,我们都是采用这两个函数来设置 GPIO 端口的输入和输出状态。比如我们要设
置 GPIOB.5 输出 1,那么方法为:
GPIO_SetBits(GPIOB, GPIO_Pin_5);
反之如果要设置 GPIOB.5 输出位 0,方法为:
GPIO_ResetBits (GPIOB, GPIO_Pin_5);

主函数编写

#include "stm32f10x.h"
#include "led.h"
#include "delay.h"

int main(void)
{
	
	LED_Init();
	delay_init();
	while(1)
	{
		GPIO_SetBits(GPIOB,GPIO_Pin_5);
		GPIO_SetBits(GPIOE,GPIO_Pin_5);
		delay_ms(500);
		
		GPIO_ResetBits(GPIOB,GPIO_Pin_5);
	    GPIO_ResetBits(GPIOE,GPIO_Pin_5);
		delay_ms(500);

	}

}


led.h文件

#ifndef __LED_H
#define __LED_H

void LED_Init(void);



#endif


led.c

#include "led.h"
#include "stm32f10x.h"
void LED_Init(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
	GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOB,&GPIO_InitStructure);
	GPIO_SetBits(GPIOB,GPIO_Pin_5);
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;
	GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOE,&GPIO_InitStructure);	
	GPIO_SetBits(GPIOE,GPIO_Pin_5);
}

通过编译以上操作。我们就可以在FLYMCU中通过串口或者下载器实现相应功能了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值